Submission #833666

#TimeUsernameProblemLanguageResultExecution timeMemory
833666erraySuper Dango Maker (JOI22_dango3)C++17
100 / 100
1795 ms732 KiB
#include "dango3.h"

#include <vector>
#include <bits/stdc++.h>

using namespace std;

#ifdef DEBUG 
  #include "/home/eagle/apio17/joi_sc22_4/debug.h"
#else 
  #define debug(...) void(37)
#endif

void Solve(int N, int M) {
  auto Ask = [&](vector<int> x) {
    vector<bool> in(N * M);
    for (auto& v : x) {
      in[v] = true;
    }
    vector<int> ask;
    for (int i = 0; i < N * M; ++i) {
      if (!in[i]) {
        ask.push_back(i + 1);
      }
    }
    int res = Query(ask);
    return M - res;
  };
  
  vector<vector<int>> gs(M);
  for (int i = 0; i < N * M; ++i) {
    int low = 0, high = M - 1;
    while (low < high) {
      int mid = (low + high) >> 1;
      vector<int> a = gs[mid];
      a.push_back(i);
      debug(a, Ask(a));
      if (Ask(a) > 1) {
        low = mid + 1;
      } else {
        high = mid;
      }
    }
    gs[low].push_back(i);
  }
  for (auto& x : gs) {
    for (auto& e : x) {
      e += 1;
    }
    Answer(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...