Submission #1261758

#TimeUsernameProblemLanguageResultExecution timeMemory
1261758islam_2010Bank (IZhO14_bank)C++20
44 / 100
63 ms328 KiB

#include <bits/stdc++.h>
#define int long long
using namespace std;

const int sz = 25;
int n, m;
int a[sz], b[sz];
vector<bool> used(sz, false);
signed main(){
    
   cin >> n >> m;
   unordered_map<int, int> mp;
   int x = 0;
   int ans = 0;
   for(int i = 0; i < n; i++){
    cin >> a[i];
    mp[a[i]]++;
   }for(int i = 0; i < m; i++){
    cin >> b[i];
   }for(int mask = 0; mask < (1 << m); mask++){
    int s = 0, y = 0;
    for(int i = 0; i < m; i++){
        if(mask&(1<<i)){
            s += b[i];
            y |= (1<<i);
        }
    }bool ok=false;
    int num;
    for(int i = 0; i < n; i++){
        if(s == a[i] && mp[a[i]]){
            num = a[i];
            ok=true;
            break;
        }
    }if(ok){

        bool flag = true;
        for(int i = 0; i < m; i++){
            if(y&(1<<i) && used[i]){
                flag=false;
                break;
            }
        }if(flag){
            for(int i = 0; i < m; i++){
                if(y&(1<<i)){
                    used[i] = true;
                }
            }
            mp[num]--;
            ans++;
        }
        
        

    }
   }if(ans == n){
    cout << "YES\n";
   }else {
    cout << "NO\n";
   }

}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...