Submission #951915

#TimeUsernameProblemLanguageResultExecution timeMemory
951915Gromp15Super Dango Maker (JOI22_dango3)C++17
100 / 100
100 ms644 KiB
#include "dango3.h" #include <random> #include <vector> #include <chrono> #include <algorithm> #define all(x) x.begin(), x.end() #define sz(x) (int)x.size() using namespace std; void Solve(int n, int m) { mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); vector<bool> used(n*m); for (int t = 0; t < m; t++) { vector<int> here; for (int i = 0; i < n*m; i++) if (!used[i]) { here.push_back(i + 1); } if (t == m-1) { Answer(here); return; } shuffle(all(here), rng); int l = n, r = sz(here) - 1, ans = sz(here); while (l <= r) { int mid = (l+r)/2; int got = Query(vector<int>(here.begin(), here.begin() + mid)); if (got >= 1) ans = mid, r = mid-1; else l = mid+1; } here.resize(ans); for (int i = 0; i < (int)here.size(); i++) { int orig = here[i]; here.erase(here.begin() + i); int res = Query(here); if (res == 0) here.insert(here.begin() + i, orig); else i--; } Answer(here); for (int x : here) used[x-1] = 1; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...