제출 #1320735

#제출 시각아이디문제언어결과실행 시간메모리
1320735mansur죄수들의 도전 (IOI22_prison)C++20
80 / 100
7 ms1080 KiB
#include "prison.h" #include <bits/stdc++.h> using namespace std; int bt(int x, int k) { while (k--) x /= 3; return x % 3; } vector<vector<int>> devise_strategy(int N) { int k = 7; vector<vector<int>> ans(k * 3 + 2, vector<int> (N + 1)); ans[0][0] = 0; for (int i = 1; i <= N; i++) ans[0][i] = bt(i, k) + 1; for (int i = 1; i <= k * 3 + 1; i++) { int b = k - (i - 1) / 3, v = (i - 1) % 3; if (!b) v = 1; if ((k - b) & 1) { ans[i][0] = 0; for (int j = 1; j <= N; j++) { int v1 = bt(j, b); if (v1 > v) ans[i][j] = -2; else if (v1 < v) ans[i][j] = -1; else if (b) { if (b == 1) { if (j % 3 == 2) ans[i][j] = -2; else if (j % 3 == 0) ans[i][j] = -1; else ans[i][j] = k * 3 + 1; continue; } v1 = bt(j, b - 1); ans[i][j] = (k + 1 - b) * 3 + v1 + 1; } } continue; } ans[i][0] = 1; for (int j = 1; j <= N; j++) { int v1 = bt(j, b); if (v1 > v) ans[i][j] = -1; else if (v1 < v) ans[i][j] = -2; else if (b) { if (b == 1) { if (j % 3 == 2) ans[i][j] = -1; else if (j % 3 == 0) ans[i][j] = -2; else ans[i][j] = k * 3 + 1; continue; } v1 = bt(j, b - 1); ans[i][j] = (k + 1 - b) * 3 + v1 + 1; } } } cerr << "JJ"; return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...