제출 #44330

#제출 시각아이디문제언어결과실행 시간메모리
44330octopusesMemory 2 (JOI16_memory2)C++17
100 / 100
2 ms680 KiB
#include "Memory2_lib.h" #include <bits/stdc++.h> using namespace std; void Solve(int T, int N) { vector < int > C[50]; vector < int > c; int A[4][4], B[4][4]; int a[4], b[4]; a[0] = 0; a[1] = 1; a[2] = 2; for(int i = 0; i < 3; ++ i) for(int j = i + 1; j < 3; ++ j) A[i][j] = A[j][i] = Flip(i, j); for(int k = 3; k < N + N; ++ k) { b[3] = k; for(int i = 0; i < 3; ++ i) { b[i] = a[i]; B[i][3] = B[3][i] = Flip(b[i], k); for(int j = 0; j < 3; ++ j) B[i][j] = A[i][j]; } for(int i = 0; i < 4; ++ i) if(i == 0) B[i][i] = B[i][i + 1]; else B[i][i] = B[i][i - 1]; for(int i = 0; i < 4; ++ i) { bool flag = true; for(int j = 1; j < 4; ++ j) if(B[i][j] != B[i][j - 1]) { flag = false; break; } if(flag) { C[B[i][0]].push_back(b[i]); c.clear(); for(int j = 0; j < 4; ++ j) if(j != i) c.push_back(j); break; } } for(int i = 0; i < 3; ++ i) { a[i] = b[c[i]]; for(int j = 0; j < 3; ++ j) A[i][j] = B[c[i]][c[j]]; } } int k = (A[0][1] == A[0][2]) ? 1 : 0; for(int i = 0; i < 3; ++ i) if(i != k) C[A[i][k]].push_back(a[i]); k = a[k]; for(int i = 0; i < N; ++ i) { if(C[i].size() == 1) C[i].push_back(k); Answer(C[i][0], C[i][1], i); } return; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...