fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. typedef long long ll;
  4.  
  5. int dp[32][32], pSum[32][32];
  6.  
  7. int main() {
  8.  
  9. ios::sync_with_stdio(false);
  10. cin.tie(0);
  11.  
  12. int n, l;
  13. ll k;
  14. cin>>n>>l>>k;
  15. memset(dp, -1, sizeof(dp));
  16. dp[0][0]=1;
  17. for(int i=0; i<n; i++){
  18. for(int j=0; j<=min(i, l); j++){
  19. if(dp[i][j]==-1) continue;
  20.  
  21. if(dp[i+1][j]==-1) dp[i+1][j]= dp[i][j];
  22. else dp[i+1][j]+= dp[i][j];
  23.  
  24. if(dp[i+1][j+1]==-1) dp[i+1][j+1]= dp[i][j];
  25. else dp[i+1][j+1]+= dp[i][j];
  26. }
  27. }
  28. for(int i=0; i<=n; i++){
  29. pSum[i][0]= dp[i][0];
  30. for(int j=1; j<=min(i, l); j++){
  31. pSum[i][j]= pSum[i][j-1]+ dp[i][j];
  32. }
  33. }
  34. for(int i=n-1; i>=0; i--){
  35. if(k>pSum[i][min(l,i)]){
  36. cout<<1;
  37. k= k- pSum[i][min(l,i)];
  38. l--;
  39. }
  40. else{
  41. cout<<0;
  42. }
  43. }
  44. return 0;
  45. }
Success #stdin #stdout 0s 5428KB
stdin
5 3 19
stdout
10011