Submission #136601

#TimeUsernameProblemLanguageResultExecution timeMemory
136601FedericoSBank (IZhO14_bank)C++14
100 / 100
185 ms2552 KiB
#include <iostream> using namespace std; int N,M; int A[25],B[25]; bool DP[2000000]; bool V[2000000]; bool F(int b){ if(V[b]) return DP[b]; int S=0; for(int j=0;j<M;j++) if(b&(1<<j)) S+=B[j]; int i=0; for(;i<N;i++){ if(S>=A[i]) S-=A[i]; else break; } if(i==N) return true; int P=A[i]-S; bool res=false; for(int j=0;j<M;j++) if(!(b&(1<<j)) and B[j]<=P) res|=F(b|(1<<j)); DP[b]=res; V[b]=true; return res; } int main(){ cin>>N>>M; for(int i=0;i<N;i++) cin>>A[i]; for(int i=0;i<M;i++) cin>>B[i]; cout<<(F(0)?"YES":"NO"); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...