Submission #1344915

#TimeUsernameProblemLanguageResultExecution timeMemory
1344915aladdin1Bank (IZhO14_bank)C++20
100 / 100
109 ms4532 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
const int N = 2e6 + 25;
int a[N],b[N],dp[N];
int main(){
    int n,m;cin>>n>>m;
    for (int i=0;i<n;i++) {
        cin>>a[i];
        if(i>0)a[i]+=a[i-1];
    }
    for (int i=0;i<m;i++){
        cin>>b[i];
    }
    for(int mask=0;mask<(1<<m);mask++){
        if(dp[mask]==n)break;
        int sum=a[dp[mask]];
        for(int i=0;i<m;i++){
            if(mask&(1<<i)){
                sum-=b[i];
            }
        }
        for(int i=0;i<m;i++){
            if(mask&(1<<i))continue;
            dp[mask|(1<<i)]=max(dp[mask|(1<<i)],dp[mask]+(sum==b[i]));
        }
    }
    for(int i=0;i<(1<<m);i++){
        if(dp[i]==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...