Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- int const maxn=128;
- int s,n,m,a[maxn*2],suma;
- short dp[maxn*2][maxn*maxn];
- void read()
- {
- scanf("%d%d",&s,&n);
- for(int i=1;i<=n;i++)
- {
- scanf("%d",&a[i]);
- suma+=a[i];
- }
- scanf("%d",&m);
- for(int i=n+1;i<=n+m;i++)
- {
- scanf("%d",&a[i]);
- a[i]*=(-1);
- }
- }
- void solve()
- {
- int cur;
- for(int i=0;i<=n+m;i++)
- dp[i][0]=1;
- cout<<"passed first for\n";
- for(int i=1;i<=n+m;cout<<"passed i: "<<i<<endl,i++)
- for(int j=1;j<=suma;cout<<"passed j: "<<j<<endl,j++)
- {
- dp[i][j]=dp[i-1][j];
- cur=a[i];
- if(-1<j-a[i]&&j-a[i]<=suma)dp[i][j]=max(dp[i-1][j-a[i]],dp[i][j]);
- }
- cout<<"solve passed\n";
- }
- int main()
- {
- read();
- solve();
- if(dp[n+m][s])
- {
- int i=n+m,j=s;
- while(i>0&&j>0)
- {
- if(dp[i][j])
- {
- if(a[i]>0)printf("+%d ",a[i]);
- else printf("%d ",a[i]);
- }
- else break;
- j-=a[i];
- i--;
- }
- }
- else printf("Impossible\n");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement