Advertisement
Guest User

Untitled

a guest
Sep 21st, 2017
62
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.06 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2.  
  3. using namespace std ;
  4.  
  5. #define M 5000
  6. #define pf printf
  7. #define sf scanf
  8. #define sf1(x) scanf("%d",&x)
  9. #define sf2(x,y) scanf("%d %d",&x,&y)
  10. #define pf1(x) printf("%d\n",x)
  11. #define pf2(x,y) printf("%d %d\n",x,y)
  12. #define rep(i,n) for(i = 0 ;i< n ; i++)
  13. #define pb push_back
  14.  
  15. typedef long long ll ;
  16. ll ret = 0;
  17. long long dp[M][M];
  18. int rec(int n , int r ){
  19. pf("%d n(%d)/r(%d)/ ret(%lld)\n",++var,n,ret);
  20. if(r == 0) return 1;
  21. if(r == 1) return n;
  22. if(n ==  r) return 1;
  23.     if(r < n/2) r =  n-r;
  24.  
  25.  
  26. if(n< M && r < M ){
  27.  if(dp[n][r]  != -1)
  28.     return dp[n][r];
  29. }
  30. ret =  rec(n-1, r) +rec(n-1, r-1);
  31.  
  32. if(n< M && r< M ) dp[n][r] = ret;
  33. return ret;
  34. }
  35.  
  36. int main(){
  37.    // freopen("in.txt ","r",stdin);
  38.  // freopen("out.txt ","w",stdout);
  39.  
  40. int i , j , k, tc ;
  41.  
  42. for(i = 0 ;i< M ;i++)
  43.     for(j = 0 ;j< M ;j++)
  44.         dp[i][j] = -1;
  45.  
  46.   while(scanf("%d%d" ,&j ,&k)){
  47.       if(j == 0 && k == 0 )break;
  48.     ll ret ;
  49.    var  = 0;
  50.     if(k < j/2) k =  j-k;
  51.     ret =  rec(j ,k);
  52.  
  53.   pf("%d\n",ret ,var);
  54.  
  55.   }
  56. return  0;
  57. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement