Submission #1191893

#TimeUsernameProblemLanguageResultExecution timeMemory
1191893hmmmBank (IZhO14_bank)C++20
100 / 100
78 ms8592 KiB
#include<bits/stdc++.h>
using namespace std;
using pii=array<int,2>;
const int N=21;
int a[N],b[N];
pii dp[1<<N];

int main(){
    ios::sync_with_stdio(0); cin.tie(0);
    int n,m;
    cin >> n >> m;
    for(int i=0;i<n;i++) cin >> a[i];
    for(int i=0;i<m;i++) cin >> b[i];
    for(int i=1;i<(1<<m);i++) dp[i]={-1,-1};
    for(int i=0;i<(1<<m);i++){
        int st=dp[i][0];
        int cnt=dp[i][1];
        if(st==-1) continue;
        for(int j=0;j<m;j++){
            if((i&(1<<j))!=0) continue;
            if(cnt+b[j]==a[st]){
                dp[i|(1<<j)]={st+1,0};
            }
            else if(cnt+b[j]<a[st]){
                dp[i|(1<<j)]={st,cnt+b[j]};
            }
        }
    }
    for(int i=1;i<(1<<m);i++){
        // cout << i << ' ' << dp[i][0] << ' ' << dp[i][1] << "\n";
        if(dp[i][0]==n){
            cout << "YES";
            return 0;
        }
    }
    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...