Submission #1230383

#TimeUsernameProblemLanguageResultExecution timeMemory
1230383kaltspielerhyPrisoner Challenge (IOI22_prison)C++20
0 / 100
0 ms324 KiB
#include <bits/stdc++.h> #include "prison.h" using namespace std; const int x = 22; vector<int> p3; int bit3(int num, int bit) { int multAct = bit; while (num > p3[multAct]) multAct++; while (multAct != bit) { while (num >= p3[multAct]) num -= p3[multAct]; multAct--; } int reponse = 0; while (num >= (p3[multAct])) { num -= p3[multAct]; reponse++; } return reponse; } vector<vector<int>> devise_strategy(int N) { p3.resize(13); p3[0] = 1; for (int i = 1; i <= 12; i++) p3[i] = p3[i-1]*3; vector<vector<int>> s(x+1, vector<int>(N+1)); int iBit = 7; s[0][0] = 0; for (int A = 1; A <= N; A++) { s[0][A] = bit3(A, iBit)+1; } int idx = 1; while (iBit >= 2) { for (int i = 0; i < 3; i++) { s[idx][0] = ((7-iBit)%2==0?1:0); int num = 1; while (num <= N) { if (bit3(num, iBit) < i) { s[idx][num] = ((7-iBit+1)%2==0?-1:-2); } if (bit3(num, iBit) == i) { s[idx][num] = bit3(num, iBit-1)+(7-iBit+1)*3+1; } if (bit3(num, iBit) > i) { s[idx][num] = ((7-iBit+1)%2==0?-2:-1); } num++; } idx++; } iBit--; } for (int i = 0; i < 3; i++) { s[idx][0] = ((7-iBit)%2==0?1:0); int num = 1; while (num <= N) { if (bit3(num, iBit) == 0) { s[idx][num] = ((7-iBit+1)%2==0?-1:-2); } if (bit3(num, iBit) == 1) { s[idx][num] = idx+1; } if (bit3(num, iBit) > i) { s[idx][num] = ((7-iBit+1)%2==0?-2:-1); } num++; } } iBit--; int num = 1; while (num <= N) { if (bit3(num, iBit) == 0) { s[idx][num] = ((7-iBit+1)%2==0?-1:-2); } if (bit3(num, iBit) == 2) { s[idx][num] = ((7-iBit+1)%2==0?-2:-1); } num++; } // for (auto i : s) { // for (auto i2 : i) { // cerr << i2 << ' '; // } // cerr <<'\n'; // } return s; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...