This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<bits/stdc++.h>
using namespace std;
int a,b,c,d,e,f[1009],g[1009],dp[22][(1<<21)],jm[(1<<21)];
vector <int> v[22];
int main(){
ios_base::sync_with_stdio(false),cin.tie(0),cout.tie(0);
cin>>a>>b;
for(c=1; c<=a; c++) cin>>f[c];
for(c=1; c<=b; c++) cin>>g[c];
for(d=1; d<=(1<<b)-1; d++){
for(c=1; c<=b; c++){
if(((1<<(c-1))&d)!=0) jm[d]+=g[c];
}
}
for(c=1; c<=a; c++){
for(d=1; d<=(1<<b)-1; d++){
if(jm[d]==f[c]) v[c].push_back(d);
}
}
if(a==1){
if(v[c].size()==0){
cout<<"NO";
}else{
cout<<"YES";
}
return 0;
}
dp[0][0]=1;
for(c=1; c<=a; c++){
for(d=1; d<=(1<<b)-1; d++){
for(e=0; e<v[c].size(); e++){
if((v[c][e]&d)==v[c][e]&&dp[c-1][d-v[c][e]]==1){
dp[c][d]=1;
break;
}
}
}
}
for(d=1; d<=(1<<b)-1; d++){
if(dp[a][d]==1){
cout<<"YES";
return 0;
}
}
cout<<"NO";
return 0;
}
Compilation message (stderr)
bank.cpp: In function 'int main()':
bank.cpp:31:14: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for(e=0; e<v[c].size(); e++){
~^~~~~~~~~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |