제출 #1306409

#제출 시각아이디문제언어결과실행 시간메모리
1306409hectormedrano은행 (IZhO14_bank)C++20
0 / 100
1116 ms266488 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;}
        for(ll i=0;i<N;i++){
            if(a[i] != s[mx-(N-i)]){return;}
        }
        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...