Advertisement
Guest User

Untitled

a guest
May 24th, 2018
68
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.93 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. #include<cstdio>
  3. using namespace std;
  4.  
  5. int n,i,d,m;
  6. int a[205],dp[205][25][15];
  7.  
  8. int solve(int i,int cnt,int sum)
  9. {
  10. //cout<<i<< " "<<cnt<<" "<<sum<<" "<<dp[i][cnt][sum]<<endl;
  11.  
  12. if(i==n){
  13. if ( sum == 0 && cnt == m ) return 1 ;
  14. else return 0 ;
  15. }
  16. if(dp[i][cnt][sum]!=-1) return dp[i][cnt][sum];
  17.  
  18. int ret1=0,ret2=0;
  19. ret1=solve(i+1,cnt+1,((((d-a[i])+sum)%d)+sum)%d);
  20. ret2=solve(i+1,cnt,sum);
  21. return dp[i][cnt][sum]=(ret1+ret2);
  22.  
  23. }
  24.  
  25. int main()
  26. {
  27. int t,q,kase=0;
  28. scanf("%d",&t);
  29. while(t--)
  30. {
  31. scanf("%d%d",&n,&q);
  32. for(int i=0;i<n;i++)
  33. {
  34. scanf("%d",&a[i]);
  35. }
  36. printf("Case %d:\n",++kase);
  37. for(int i=0;i<q;i++)
  38. {
  39. scanf("%d%d",&d,&m);
  40. memset(dp,-1,sizeof dp);
  41. int ans=solve(0,0,0);
  42. printf("--%d\n",ans);
  43. }
  44. }
  45. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement