#include "Memory2_lib.h"
#include <bits/stdc++.h>
using namespace std;
namespace{
}
void Solve(int T, int N){
if(N == 1){
Answer(0, 1, 1);
return;
}
if(N == 2){
for(int i = 0; i < 4; ++i){
for(int j = i+1; j < 4; ++j){
if(Flip(i, j) == 1){
Answer(i, j, 1);
int x = -1, y = -1;
for(int k = 0; k < 4; ++k){
if(k != i && k != j){
if(x == -1) x = k;
else y = k;
}
}
Answer(x, y, 0);
return;
}
}
}
assert(false);
return;
}
int a = 0, b = 1, cur = Flip(0, 1);
for(int i = 2; i < 2 * N; ++i){
int ai = Flip(a, i);
int bi = Flip(b, i);
int nw = max(ai, bi);
if(cur < nw){
cur = nw;
if(ai > bi) b = i;
else a = i;
}
}
// cout << cur << ' ' << a << ' ' << b << '\n';
vector<int> last = {a};
vector<int> answer(2 * N, -1);
for(int i = 0; i < 2 * N; ++i) if(i != a){
int ai = Flip(a, i);
if(ai < cur){
answer[i] = ai;
} else{
last.push_back(i);
}
}
// cout << (int)last.size() << '\n';
// for(int i = 0; i < (int)last.size(); ++i) cout << last[i] << ' '; cout << '\n';
if((int)last.size() == 2){
answer[last[0]] = N-1;
answer[last[1]] = N-1;
} else{
assert((int)last.size() == 4);
for(int i = 0; i < 4; ++i){
for(int j = i+1; j < 4; ++j){
if(Flip(last[i], last[j]) == N-1){
// cout << last[i] << ' ' << last[j] << " : N-1\n";
answer[last[i]] = N-1;
answer[last[j]] = N-1;
int x = -1, y = -1;
for(int k = 0; k < 4; ++k){
if(k != i && k != j){
// cout << "fl : " << k << '\n';
if(x == -1) x = k;
else y = k;
}
}
// cout << last[x] << ' ' << last[y] << '\n';
answer[last[x]] = N-2;
answer[last[y]] = N-2;
break;
}
}
}
}
vector<pair<int, int>> position(N, make_pair(-1, -1));
// for(int i = 0; i < 2 * N; ++i) cout << answer[i] << ' '; cout << '\n';
// return;
for(int i = 0; i < 2 * N; ++i){
assert(answer[i] != -1);
if(position[answer[i]].first == -1) position[answer[i]].first = i;
else {
assert(position[answer[i]].second == -1);
position[answer[i]].second = i;
}
}
for(int i = 0; i < N; ++i){
Answer(position[i].first, position[i].second, i);
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |