Submission #1229446

#TimeUsernameProblemLanguageResultExecution timeMemory
1229446chaeryeongLast supper (IOI12_supper)C++20
0 / 100
230 ms12512 KiB
#include "advisor.h"
#include <bits/stdc++.h>
using namespace std;

void ComputeAdvice (int *c, int n, int k, int m) {
  vector <int> occ[n];
  for (int i = 0; i < n; i++) {
    occ[c[i]].push_back(i);
  }
  for (int i = 0; i < n; i++) {
    occ[i].push_back(n);
  }
  set <pair <int, int>> ii;
  set <int> jj;
  vector <int> pp(n, 0);
  for (int i = 0; i < k; i++) {
    pp[i] = i;
    ii.insert({occ[i][0], i});
    jj.insert(i);
  }
  vector <int> e(n, 0);
  for (int i = 0; i < n; i++) {
    if (jj.count(c[i])) {
      e[i] = -1; continue;
    }
    auto x = *(--ii.end());
    ii.erase(x); jj.erase(x.second);
    e[i] = pp[x.second];
    pp[c[i]] = pp[x.second];
    pp[x.second] = 0;
    auto g = *lower_bound(occ[c[i]].begin(), occ[c[i]].end(), i);
    ii.insert({g, c[i]});
    jj.insert(c[i]);
  }
  for (int i = 0; i < n; i++) {
    WriteAdvice(e[i] == -1);
  }
  int f = __lg(k) + 1;
  for (int j = 0; j < n; j++) {
    if (e[j] == -1) {
      continue;
    }
    for (int k = 0; k < f; k++) {
      WriteAdvice((e[j] >> k) & 1);
    }
  }
}
#include "assistant.h"
#include <bits/stdc++.h>
using namespace std;

void Assist (unsigned char *a, int n, int k, int r) {
  vector <int> useless(n, 0);
  for (int i = 0; i < n; i++) {
    useless[i] = a[i];
  }
  int f = __lg(k) + 1;
  vector <int> cur(k, 0);
  int bit = n;
  iota(cur.begin(), cur.end(), 0);
  for (int i = 0; i < n; i++) {
    int x = GetRequest();
    if (!useless[i]) {
      int idx = 0;
      for (int j = 0; j < f; j++) {
        if (a[bit++] == 1) {
          idx |= 1 << j;
        }
      }
      PutBack(cur[idx]);
      cur[idx] = x;
    }
  }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...