Submission #1326544

#TimeUsernameProblemLanguageResultExecution timeMemory
1326544ayxanesedzade10Bank (IZhO14_bank)C++20
44 / 100
1095 ms416 KiB
#include <bits/stdc++.h>
#define ll long long
#define pb push_back
#define all(x) x.begin(),x.end()
#define ld long double
using namespace std;
int main()
{
    ll n,m;cin>>n>>m;
    ll a[n+5],b[m+5];
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    for(int i=1;i<=m;i++){
        cin>>b[i];
    }
    sort(b+1,b+m+1);
    if(n==1){
        for(int mask=1;mask<(1<<m);mask++){
            ll sum=0;
            for(int j=0;j<m;j++){
                if(mask&(1<<j)){
                    sum+=b[j+1];
                }
            }
            if(sum==a[1]){
                cout<<"YES"<<endl;return 0;
            }
        }
        cout<<"NO"<<endl;
        return 0;
    }
    do{
        ll ind=1;
        ll a1[n+5];
        for(int i=1;i<=n;i++) a1[i]=a[i];
        for(int i=1;i<=m;i++){
            if(a1[ind]>=b[i]){
                a1[ind]-=b[i];
                if(a1[ind]==0) ind++;
            }
            else{
                break;
            }
        }
        if(ind==n+1){
            cout<<"YES"<<endl;return 0;
        }
    }while(next_permutation(b+1,b+m+1));
    cout<<"NO"<<endl;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...