Submission #1179313

#TimeUsernameProblemLanguageResultExecution timeMemory
1179313woohyun_jngMemory 2 (JOI16_memory2)C++20
100 / 100
0 ms328 KiB
#include "Memory2_lib.h" #include <bits/stdc++.h> using namespace std; const int MAX = 101; int V[MAX], P[MAX], Q[MAX][MAX]; int flip(int X, int Y) { if (Q[X][Y] != -1) return Q[X][Y]; Q[X][Y] = Q[Y][X] = Flip(X, Y); return Q[X][Y]; } void Solve(int T, int N) { if (N == 1) { Answer(0, 1, 0); return; } for (int i = 0; i < N * 2; i++) { P[i] = -1; for (int j = 0; j < N * 2; j++) Q[i][j] = -1; } vector<int> arr; set<int> st; arr.push_back(0), arr.push_back(1), arr.push_back(2); flip(0, 1), flip(0, 2), flip(1, 2); int X; for (int i = 3; i < N * 2; i++) { arr.push_back(i); for (int j = 0; j < 4; j++) { st.clear(); for (int k = 0; k < 4; k++) { if (j == k) continue; st.insert(flip(arr[j], arr[k])); } if (st.size() != 1) continue; V[arr[j]] = *st.begin(), arr.erase(arr.begin() + j); break; } } for (int i = 0; i < 3; i++) { st.clear(); for (int j = 0; j < 3; j++) { if (i == j) continue; st.insert(flip(arr[i], arr[j])); } if (st.size() != 1) continue; V[arr[i]] = *st.begin(), arr.erase(arr.begin() + i); break; } V[arr[0]] = V[arr[1]] = flip(arr[0], arr[1]); for (int i = 0; i < N * 2; i++) { if (P[V[i]] != -1) Answer(P[V[i]], i, V[i]); else P[V[i]] = i; } return; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...