Submission #1217803

#TimeUsernameProblemLanguageResultExecution timeMemory
1217803sam230609Bank (IZhO14_bank)C++20
100 / 100
388 ms8620 KiB
#include <bits/stdc++.h>
using namespace std;
bitset<21> c[(1<<20)]; int p[21],a[21];
int main(){
    int n,m,s,l; cin >>n>>m; p[0]=0;
    for(int i=1;i<=n;++i) cin>>p[i],p[i]+=p[i-1];
    for(int i=0;i<m;++i) cin>>a[i],c[1<<i][0]=1;
    for(int i=1;i<(1<<m);++i){
        s=0; l=0;
        for(int j=0;j<m;++j) if(i&(1<<j)) s+=a[j];
        for(int j=1;j<=n;++j) if(s==p[j]) l=j;
        if(s==p[l] && c[i][l-1]) c[i][l]=1;
        for(int j=0;j<m;++j)
            if(!(i&(1<<j)))
                for(int k=0;k<=n;++k)
                    c[i^(1<<j)][k]=c[i^(1<<j)][k]|c[i][k];
    }if(c[(1<<m)-1][n]) cout <<"YES"; else cout <<"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...