Submission #1192700

#TimeUsernameProblemLanguageResultExecution timeMemory
1192700JooDdaeMemory 2 (JOI16_memory2)C++20
0 / 100
1 ms328 KiB
#include "Memory2_lib.h" #include<bits/stdc++.h> using namespace std; vector<vector<int>> q; int qry(int x, int y) { return q[x][y] == -1 ? q[x][y] = q[y][x] = Flip(x, y) : q[x][y]; } vector<int> c; void ans(int x, int d) { if(c[d] == -1) c[d] = x; else Answer(x, c[d], d); } void Solve(int T, int N) { int M = N+N; q.resize(M, vector<int>(M, -1)); c.resize(N, -1); vector<int> v = {0, 1}; for(int i=2;i<M;i++) { v.push_back(i); do { int x = v.rbegin()[2], y = v.rbegin()[1], z = v.back(); if(qry(x, y) == qry(x, z) && qry(x, z) == qry(y, z)) { if(v.size() == 4) { Answer(x, y, qry(x, y)); v.pop_back(), v.pop_back(), v.pop_back(); v.push_back(z); } break; } else if(qry(x, z) == qry(x, y)) { v.pop_back(), v.pop_back(), v.pop_back(); v.push_back(y), v.push_back(z); ans(x, qry(x, z)); } else if(qry(y, z) == qry(x, y)) { v.pop_back(), v.pop_back(), v.push_back(z); ans(y, qry(y, z)); } else { v.pop_back(); ans(z, qry(x, z)); break; } } while(v.size() > 3); } if(v.size() == 2) { Answer(v[0], v[1], qry(v[0], v[1])); return; } for(int i=0;i<3;i++) { int x = v[i], y = v[(i+1)%3], z = v[(i+2)%3]; if(qry(x, y) == qry(x, z)) { Answer(y, z, qry(y, z)); ans(x, qry(x, y)); break; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...