| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1284358 | dex111222333444555 | Bank (IZhO14_bank) | C++20 | 337 ms | 20472 KiB |
#include <bits/stdc++.h>
#define all(v) begin(v), end(v)
#define MASK(i) (1LL << (i))
#define BIT(x, i) (((x) >> (i)) & 1)
using namespace std;
const int MAXN = 21, MAXV = 1005;
int numVal, numValA, val[MAXN], valA[MAXN];
bool dp[MAXN][MASK(MAXN)];
vector<int> canMask[MAXV];
void input(){
cin >> numValA >> numVal;
for(int i = 1; i <= numValA; i++) cin >> valA[i];
for(int i = 1; i <= numVal; i++) cin >> val[i];
}
void dex(){
for(int mask = 1; mask < MASK(numVal); mask++){
int sum = 0;
for(int i = 1; i <= numVal; i++) if (BIT(mask, i - 1))
sum += val[i];
if (sum <= 1000) canMask[sum].push_back(mask);
}
dp[0][0] = 1;
for(int i = 0; i < numValA; i++){
bool flag = 0;
for(int mask = 0; mask < MASK(numVal); mask++) if (dp[i][mask]){
for(int submask: canMask[valA[i + 1]]){
if ((mask & submask) == 0) dp[i + 1][mask | submask] = flag = 1;
}
}
if (!flag) return cout <<"NO\n", void();
}
cout << "YES\n";
}
int main(){
ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
if (fopen("TEST.inp", "r")){
freopen("TEST.inp", "r", stdin);
freopen("TEST.out", "w", stdout);
}
input();
dex();
cerr << 1.0 *clock() / CLOCKS_PER_SEC << ".s\n";
}
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... | ||||
