Submission #1182157

#TimeUsernameProblemLanguageResultExecution timeMemory
1182157ziyad_alharbiBank (IZhO14_bank)C++20
100 / 100
341 ms30856 KiB
#include<bits/stdc++.h> using namespace std; const int N=(1<<21)+5; int a[25],b[25],n,m; bool dp[25][N],vs[25][N]; vector<array<int,2>>v[25]; void cal(int x=0,int sm=0,int vl=0) { if(x==m) { for(int i=0;i<n;i++)if(a[i]==sm)v[i].push_back({sm,vl}); return; } cal(x+1,sm+b[x],vl+(1<<x)); cal(x+1,sm,vl); } bool f(int x,int ms) { if(x==n)return 1; if(vs[x][ms])return dp[x][ms]; bool bl=0; for(auto [i,j]:v[x])if((j&ms)==j&&i==a[x])bl|=f(x+1,ms-j); vs[x][ms]=1; return dp[x][ms]=bl; } signed main() { ios_base::sync_with_stdio(0); cin.tie(0); cin>>n>>m; for(int x=0;x<n;x++)cin>>a[x]; for(int x=0;x<m;x++)cin>>b[x]; cal(); if(f(0,(1<<m)-1))cout<<"YES\n"; else cout<<"NO\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...