Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- int dp[2005][1005];
- int v[1005][1005];
- int main()
- {
- freopen("txt.in","r",stdin);
- freopen("txt.out","w",stdout);
- int n,m,tc,k;
- scanf("%d",&tc);
- while(tc--)
- {
- scanf("%d %d",&k,&n);
- for(int i=1; i<=n; ++i)
- {
- scanf("%d",&m);
- v[i][0]=m;
- for(int j=1; j<=m; ++j)
- {
- scanf("%d",&v[i][j]);
- }
- }
- for(int i=0;i<=k;++i)
- {
- for(int j=0;j<=n;++j)
- {
- dp[i][j]=-1;
- }
- }
- for(int g=0; g<=k; ++g)
- {
- dp[g][0]=0;
- for(int i=1; i<=n; ++i)
- {
- for(int j=1; j<=v[i][0]; ++j)
- {
- if(g>=v[i][j]&&dp[m-v[i][j]][i-1]!=-1)
- dp[g][i]=max(dp[g-v[i][j]][i-1]+v[i][j],dp[g][i]);
- }
- }
- }
- dp[k][n]!=-1 ? printf("%d\n",dp[k][n]) : printf("no solution\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement