Submission #1306408

#TimeUsernameProblemLanguageResultExecution timeMemory
1306408hectormedranoBank (IZhO14_bank)C++20
0 / 100
1 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() == N){
        vector<ll> s(mx, 0);
        for(ll i=0;i<N;i++){
            s[v[i]] += b[i];
        }
        sort(s.begin(), s.end());
        if(mx > M){return;}
        for(ll i=mx-1;i>=0;i--){
            if(a[M-(mx-i)] != s[i]){return;}
        }
        ans = true;
    } 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...