#include "Memory2_lib.h"
#include <bits/stdc++.h>
using namespace std;
#define MAX 60
int mp[MAX][MAX];
int chk[MAX];
int query(int x, int y) {
if (x > y) swap(x, y);
if (!~mp[x][y]) return mp[x][y] = Flip(x, y);
return mp[x][y];
}
void Solve(int T, int N) {
memset(mp, -1, sizeof(mp));
vector<int> v;
int i;
while (1) {
for (i = 0; i < N * 2; i++) if (!chk[i]) v.push_back(i);
if (v.size() <= 2) {
Answer(v[0], v[1], query(v[0], v[1]));
return;
}
int M = v.size();
vector<int> qarr, cnt(N);
for (i = 0; i < M; i++) qarr.push_back(query(v[i], v[(i + 1) % M]));
int x, mx = 0;
for (auto v : qarr) cnt[v]++, mx = max(mx, cnt[v]);
for (i = 0; i < N; i++) if (cnt[i] == 4) break;
if (i < N) {
int k = i;
int a, b;
a = b = -1;
for (i = 0; i < M; i++) if (qarr[i] == qarr[(i + 1) % M] && qarr[i] == k) b = a, a = i;
a++, a %= M;
b++, b %= M;
chk[v[a]] = chk[v[b]] = 1;
Answer(v[a], v[b], k);
}
else {
for (i = 0; i < N; i++) if (cnt[i] == mx) break;
int k = i;
int loc;
for (i = 0; i < M; i++) if (qarr[i] == k) break;
loc = i;
while (qarr[(loc + M - 1) % M] == k) loc = (loc + M - 1) % M;
int a, b, c, d;
a = loc, b = a + 1, c = b + 1, d = c + 1;
a %= M;
b %= M;
c %= M;
d %= M;
if (query(v[a], v[d]) == k) {
if (query(v[b], v[d]) == k) a = b, c = d;
chk[v[a]] = chk[v[c]] = 1;
Answer(v[a], v[c], k);
}
else {
chk[v[b]] = chk[v[c]] = 1;
Answer(v[b], v[c], k);
}
}
v.clear();
}
}
Compilation message
memory2.cpp: In function 'void Solve(int, int)':
memory2.cpp:29:7: warning: unused variable 'x' [-Wunused-variable]
29 | int x, mx = 0;
| ^
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
0 ms |
212 KB |
Wrong Answer[3] |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
1 ms |
312 KB |
Wrong Answer[3] |
2 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Incorrect |
1 ms |
212 KB |
Wrong Answer[3] |
2 |
Halted |
0 ms |
0 KB |
- |