Submission #494832

#TimeUsernameProblemLanguageResultExecution timeMemory
494832Ronin13Bank (IZhO14_bank)C++14
52 / 100
1071 ms6348 KiB
#include<bits/stdc++.h> #define ll long long #define ull unsigned ll #define f first #define s second #define pii pair<int,int> #define pll pair<ll,ll> #define pb push_back #define epb emplace_back #define f first #define s second using namespace std; void solve(){ int n;cin>>n; int m;cin>>m; int a[n+1],b[m+1]; for(int i=1;i<=n;i++)cin>>a[i]; for(int i=1;i<=m;i++)cin>>b[i]; bool dp[n+1][(1<<m)+1]; int sum[(1<<m)+1]; for(int i=0;i<(1<<m);i++){ for(int j=0;j<=n;j++)j==0?dp[j][i]=1:dp[j][i]=0; } for(int i=0;i<(1<<m);i++){ sum[i]=0; for(int j=0;j<m;j++){ if(i&(1<<j))sum[i]+=b[j+1]; } } for(int i=1;i<=n;i++){ for(int mask=0;mask<(1<<m);mask++){ for(int s=mask;;s=(s-1)&mask){ int x=mask^s; if(sum[x]==a[i])dp[i][mask]|=dp[i-1][s]; if(s==0)break; } } } if(dp[n][(1<<m)-1])cout<<"YES\n"; else cout<<"NO\n"; } int main(){ ios_base::sync_with_stdio(false);cin.tie(0); int test=1;//cin>>test;a while(test--)solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...