#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |