Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- #include<cstdio>
- using namespace std;
- int n,i,d,m;
- int a[205],dp[205][25][15];
- int solve(int i,int cnt,int sum)
- {
- //cout<<i<< " "<<cnt<<" "<<sum<<" "<<dp[i][cnt][sum]<<endl;
- if(i==n){
- if ( sum == 0 && cnt == m ) return 1 ;
- else return 0 ;
- }
- if(dp[i][cnt][sum]!=-1) return dp[i][cnt][sum];
- int ret1=0,ret2=0;
- ret1=solve(i+1,cnt+1,((((d-a[i])+sum)%d)+sum)%d);
- ret2=solve(i+1,cnt,sum);
- return dp[i][cnt][sum]=(ret1+ret2);
- }
- int main()
- {
- int t,q,kase=0;
- scanf("%d",&t);
- while(t--)
- {
- scanf("%d%d",&n,&q);
- for(int i=0;i<n;i++)
- {
- scanf("%d",&a[i]);
- }
- printf("Case %d:\n",++kase);
- for(int i=0;i<q;i++)
- {
- scanf("%d%d",&d,&m);
- memset(dp,-1,sizeof dp);
- int ans=solve(0,0,0);
- printf("--%d\n",ans);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement