Submission #90468

# Submission time Handle Problem Language Result Execution time Memory
90468 2018-12-21T18:23:02 Z xiaowuc1 Bank (IZhO14_bank) C++14
44 / 100
30 ms 6868 KB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef pair<int, int> pii;
typedef vector<vector<int>> matrix;

int n, m;
int val[20];
int bases[20];
vector<int> masks[1001];
void solve() {
  cin >> n >> m;
  {
    vector<int> v, w;
    v.resize(n);
    for(int i = 0; i < n; i++) {
      cin >> v[i];
    }
    w.resize(m);
    for(int i = 0; i < m; i++) {
      cin >> w[i];
    }
    int a = 0;
    int b = 0;
    while(a < v.size() && b < w.size()) {
      if(v[a] == w[b]) {
        v.erase(v.begin() + a);
        w.erase(w.begin() + b);
      }
      else if(v[a] < w[b]) a++;
      else b++;
    }
    n = v.size();
    m = w.size();
    for(int i = 0; i < n; i++) {
      val[i] = v[i];
    }
    for(int i = 0; i < m; i++) {
      bases[i] = w[i];
    }
  }
  sort(val, val+n);
  reverse(val, val+n);
  for(int mask = 1; mask < (1<<m); mask++) {
    int v = 0;
    int t = mask;
    while(v <= 1000 && t) {
      v += bases[__builtin_ctz(t)];
      t &= t-1;
    }
    if(v <= 1000) masks[v].push_back(mask);
  }
  unordered_set<int> ret;
  ret.insert(0);
  for(int i = 0; i < n; i++) {
    unordered_set<int> nret;
    for(int out2: ret) {
      for(int out: masks[val[i]]) {
        if(out&out2) continue;
        if(__builtin_popcount(out | out2) + 2*(n-i-1) > m) continue;
        nret.insert(out | out2);
      }
    }
    ret = nret;
  }
  if(ret.empty()) cout << "NO\n";
  else cout << "YES\n";
}

int main() {
  ios_base::sync_with_stdio(false);
  cin.tie(NULL); cout.tie(NULL); cerr.tie(NULL);
  solve();
}

Compilation message

bank.cpp: In function 'void solve()':
bank.cpp:27:13: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     while(a < v.size() && b < w.size()) {
           ~~^~~~~~~~~~
bank.cpp:27:29: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     while(a < v.size() && b < w.size()) {
                           ~~^~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 500 KB Output is correct
3 Correct 2 ms 500 KB Output is correct
4 Correct 3 ms 720 KB Output is correct
5 Correct 29 ms 6868 KB Output is correct
6 Correct 2 ms 6868 KB Output is correct
7 Correct 2 ms 6868 KB Output is correct
8 Correct 30 ms 6868 KB Output is correct
9 Correct 29 ms 6868 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 6868 KB Output is correct
2 Correct 2 ms 6868 KB Output is correct
3 Correct 2 ms 6868 KB Output is correct
4 Correct 2 ms 6868 KB Output is correct
5 Correct 2 ms 6868 KB Output is correct
6 Correct 2 ms 6868 KB Output is correct
7 Correct 2 ms 6868 KB Output is correct
8 Correct 2 ms 6868 KB Output is correct
9 Correct 2 ms 6868 KB Output is correct
10 Correct 2 ms 6868 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 6868 KB Output is correct
2 Correct 2 ms 6868 KB Output is correct
3 Incorrect 2 ms 6868 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 500 KB Output is correct
3 Correct 2 ms 500 KB Output is correct
4 Correct 3 ms 720 KB Output is correct
5 Correct 29 ms 6868 KB Output is correct
6 Correct 2 ms 6868 KB Output is correct
7 Correct 2 ms 6868 KB Output is correct
8 Correct 30 ms 6868 KB Output is correct
9 Correct 29 ms 6868 KB Output is correct
10 Correct 2 ms 6868 KB Output is correct
11 Correct 2 ms 6868 KB Output is correct
12 Correct 2 ms 6868 KB Output is correct
13 Correct 2 ms 6868 KB Output is correct
14 Correct 2 ms 6868 KB Output is correct
15 Correct 2 ms 6868 KB Output is correct
16 Correct 2 ms 6868 KB Output is correct
17 Correct 2 ms 6868 KB Output is correct
18 Correct 2 ms 6868 KB Output is correct
19 Correct 2 ms 6868 KB Output is correct
20 Correct 2 ms 6868 KB Output is correct
21 Correct 2 ms 6868 KB Output is correct
22 Incorrect 2 ms 6868 KB Output isn't correct
23 Halted 0 ms 0 KB -