Submission #1271262

#TimeUsernameProblemLanguageResultExecution timeMemory
1271262Double_SlashSuper Dango Maker (JOI22_dango3)C++20
100 / 100
109 ms664 KiB
#include "dango3.h" #include <bits/stdc++.h> using namespace std; #define all(x) x.begin(), x.end() void Solve(int N, int M) { bool dead[N * M + 1]{}; for (int t = M; t--;) { vector<int> rem; for (int i = 1; i <= N * M; ++i) { if (not dead[i]) rem.emplace_back(i); } shuffle(all(rem), random_device()); vector<int> a; for (int i = N, last = rem.size(); i--;) { auto q = [&] (int j) { if (j < N - (int) a.size()) return false; vector<int> b(rem.begin(), rem.begin() + j); b.insert(b.end(), all(a)); return !!Query(b); }; int j = last; for (int k = q(j - 4) ? 2 << __lg(j -= 4) : 4; k >>= 1;) j -= q(j - k) * k; a.emplace_back(rem[last = j - 1]); } for (int i: a) dead[i] = true; Answer(a); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...