Submission #1306411

#TimeUsernameProblemLanguageResultExecution timeMemory
1306411hectormedranoBank (IZhO14_bank)C++20
25 / 100
1095 ms580 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;

ll N, M;
vector<ll> a, b;
//map<vector<ll>, bool> vis;
bool ans = false;

void BT(vector<ll> v, ll mx){
    //if(vis[v]){return;}
    //vis[v] = true;
    if(v.size() == M){
        vector<ll> s(mx, 0);
        for(ll i=0;i<M;i++){
            s[v[i]] += b[i];
        }
        sort(s.begin(), s.end());
        if(mx < N){return;}
        ll cnt = 0;
        for(ll i=0;i<mx;i++){
            if(cnt<N and s[i] == a[cnt]){cnt++;}
        }
        if(cnt == N){ans = true;}
        //for(ll x : s){cout<<x<<" ";} cout<<endl;
    } else {
        for(ll i=0;i<mx;i++){
            v.push_back(i);
            BT(v, mx);
            v.pop_back();
        }
        v.push_back(mx);
        BT(v, mx+1);
        v.pop_back();
    }
}

int main() {
    cin>>N>>M;
    a.resize(N);
    b.resize(M);
    for(ll i=0;i<N;i++){cin>>a[i];}
    for(ll i=0;i<M;i++){cin>>b[i];}
    sort(a.begin(), a.end());
    BT({}, 0);
    if(ans){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...