Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std ;
- #define M 5000
- #define pf printf
- #define sf scanf
- #define sf1(x) scanf("%d",&x)
- #define sf2(x,y) scanf("%d %d",&x,&y)
- #define pf1(x) printf("%d\n",x)
- #define pf2(x,y) printf("%d %d\n",x,y)
- #define rep(i,n) for(i = 0 ;i< n ; i++)
- #define pb push_back
- typedef long long ll ;
- ll ret = 0;
- long long dp[M][M];
- int rec(int n , int r ){
- pf("%d n(%d)/r(%d)/ ret(%lld)\n",++var,n,ret);
- if(r == 0) return 1;
- if(r == 1) return n;
- if(n == r) return 1;
- if(r < n/2) r = n-r;
- if(n< M && r < M ){
- if(dp[n][r] != -1)
- return dp[n][r];
- }
- ret = rec(n-1, r) +rec(n-1, r-1);
- if(n< M && r< M ) dp[n][r] = ret;
- return ret;
- }
- int main(){
- // freopen("in.txt ","r",stdin);
- // freopen("out.txt ","w",stdout);
- int i , j , k, tc ;
- for(i = 0 ;i< M ;i++)
- for(j = 0 ;j< M ;j++)
- dp[i][j] = -1;
- while(scanf("%d%d" ,&j ,&k)){
- if(j == 0 && k == 0 )break;
- ll ret ;
- var = 0;
- if(k < j/2) k = j-k;
- ret = rec(j ,k);
- pf("%d\n",ret ,var);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement