Submission #848042

#TimeUsernameProblemLanguageResultExecution timeMemory
848042NeroZeinSuper Dango Maker (JOI22_dango3)C++17
100 / 100
1921 ms1124 KiB
#include "dango3.h" #include <bits/stdc++.h> using namespace std; void Solve(int N, int M) { int mx = 0; vector<vector<int>> ret(M + 1); vector<int> group(N * M + 1, M + 2); auto assign = [&](int i, int id) { group[i] = id; mx = max(mx, id); ret[id].push_back(i); }; auto ch = [&](int mid, int id) { vector<int> ask; for (int i = 1; i <= N * M; ++i) { if (group[i] >= mid && i != id) { ask.push_back(i); } } int z = M - Query(ask); return z == mid; }; assign(1, 1); for (int i = 2; i <= N * M; ++i) { int l = 1, r = mx + 1; while (l < r) { int mid = (l + r + 1) / 2; if (ch(mid, i)) { l = mid; } else { r = mid - 1; } } assign(i, l); } for (int i = 1; i <= M; ++i) { Answer(ret[i]); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...