# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1275114 | almaz | Bank (IZhO14_bank) | C++17 | 1098 ms | 62540 KiB |
#include <iostream>
#include <vector>
#include <set>
#include <unordered_map>
using namespace std;
#pragma warning(disable:4996)
#define endl '\n'
signed main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n , m;
scanf( "%d%d" ,&n , &m);
vector <int> a(n) , b(m);
for(int i = 0;i < n;i++){
scanf("%d" ,&a[i]);
}
for(int i = 0;i < m;i++){
scanf("%d" ,&b[i]);
}
unordered_map <int, set <int>> mp;
for(int i = 0;i < (1 << m);i++){
int sum = 0;
for(int j = 0;j < m;j++){
if(1 & (i >> j)){
sum += b[j];
}
}
mp[sum].insert(i);
}
set <int> g;
g.insert(0);
for(int i = 0;i < n;i++){
set <int> cnt;
for(int j : mp[a[i]]){
for(int k : g){
if((k & j) == 0){
cnt.insert(k | j);
}
}
}
swap(cnt , g);
}
int f = 0;
if(g.size() > 0){
f = 1;
}
if(f){
printf("YES");
}
else{
printf("NO");
}
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |