Submission #421483

#TimeUsernameProblemLanguageResultExecution timeMemory
421483Drew_MalnaRISC (COI21_malnarisc)C++17
67.63 / 100
3 ms460 KiB
#include <iostream> #include <vector> #include <bitset> #include <random> #include <algorithm> using namespace std; #define pb push_back #define ii pair<int, int> #define f1 first #define s2 second bitset<169> used; // mt19937 RNG(69); int main() { ios :: sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin >> n; vector<ii> rem[100]; const auto gen = [&](const auto &self, int l, int r, int h) -> void { if (l >= r) return; int mid = (l + r) >> 1; self(self, l, mid, h+1); self(self, mid+1, r, h+1); for (int i = l; i <= mid; ++i) for (int j = mid+1; j <= r; ++j) rem[h].pb({i, j}); return; }; gen(gen, 1, n, 0); // for (int i = 1; i <= n; ++i) // for (int j = i+1; j <= n; ++j) // rem.pb({i, j}); vector<vector<ii>> res; for (int i = 0; i < 100; ++i) { while (!rem[i].empty()) { //shuffle(rem.begin(), rem.end(), RNG); used.reset(); vector<ii> out, nxt; for (auto [a, b] : rem[i]) { if (!used[a] && !used[b]) out.pb({a, b}), used[a] = used[b] = true; else nxt.pb({a, b}); } res.pb(out); rem[i] = nxt; } } cout << res.size() << '\n'; for (auto &out : res) { for (int i = 0; i < (int)out.size(); ++i) cout << "CMPSWP R" << out[i].f1 << " R" << out[i].s2 << " \n"[i+1 == (int)out.size()]; } return 0; }
#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...
#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...