Submission #1284358

#TimeUsernameProblemLanguageResultExecution timeMemory
1284358dex111222333444555Bank (IZhO14_bank)C++20
100 / 100
337 ms20472 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)

bank.cpp: In function 'int main()':
bank.cpp:40:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   40 |         freopen("TEST.inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
bank.cpp:41:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   41 |         freopen("TEST.out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...