Submission #38920

#TimeUsernameProblemLanguageResultExecution timeMemory
38920funcsrMemory 2 (JOI16_memory2)C++14
60 / 100
0 ms2032 KiB
#include "Memory2_lib.h" #include <iostream> #include <vector> #include <string> #include <algorithm> #include <set> #include <cassert> #include <random> #include <map> #include <ctime> using namespace std; typedef pair<int, int> P; #define rep(i, n) for (int i=0; i<(n); i++) #define all(x) x.begin(), x.end() #define uniq(x) x.erase(unique(all(x)), x.end()) #define index(x, y) (int)(lower_bound(all(x), y) - x.begin()) #define pb push_back #define _1 first #define _2 second #define INF 1145141919 #define MOD 1000000007 mt19937 mt_rand(time(NULL)); vector<int> G[50]; int A[100]; int V[100]; void Solve(int T, int N) { rep(i, 2*N) A[i] = -1; vector<int> pos; rep(i, 2*N) pos.pb(i); while (pos.size() > 2) { int p = pos[mt_rand()%pos.size()]; int mx = -1; map<int, int> cnt; for (int x : pos) if (x != p) { int v = Flip(x, p); V[x] = v; mx = max(mx, v); cnt[v]++; } vector<int> npos; npos.pb(p); for (int x : pos) if (x != p) { if (V[x] < mx) A[x] = V[x]; else npos.pb(x); } swap(npos, pos); } assert(pos.size() == 2); A[pos[0]] = A[pos[1]] = N-1; rep(i, 2*N) G[A[i]].pb(i); rep(i, N) assert(G[i].size() == 2); rep(i, N) Answer(G[i][0], G[i][1], i); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...