Submission #1215872

#TimeUsernameProblemLanguageResultExecution timeMemory
1215872banganPrisoner Challenge (IOI22_prison)C++20
65 / 100
8 ms1196 KiB
#include "prison.h" #include <bits/stdc++.h> using namespace std; int kth(int x, int k) { k = 12-k; while (k--) x/=2; return x%2; } const int X = 24; std::vector<std::vector<int>> devise_strategy(int N) { vector s(X+1, vector<int>(N+1)); s[0][0] = 0; for (int i=1; i<=X; i++) { int b = i-1; b = (b - b%2) / 2; s[i][0] = 1 - b%2; } for (int i=1; i<=N; i++) s[0][i] = kth(i, 0) + 1; for (int i=1; i<=X; i++) for (int j=1; j<=N; j++) { int b = i-1; int r = b%2; b = (b-r) / 2; if (r < kth(j, b)) s[i][j] = -(1-s[i][0]+1); else if (r == kth(j, b)) s[i][j] = 2*(b+1) + kth(j, b+1) + 1; else if (r > kth(j, b)) s[i][j] = -(s[i][0]+1); if (b == 11 && r == kth(j, b)) { if (kth(j, b+1) == 0) s[i][j] = -(s[i][0]+1); else s[i][j] = -(1-s[i][0]+1); } } return s; // cout << "\t"; // for (int i=0; i<=N; i++) cout << i << "\t"; // cout << "\n"; // for (int i=0; i<=X; i++) { // cout << i << "\t"; // for (int j=0; j<=N; j++) cout << s[i][j] << "\t"; // cout << "\n"; // } return s; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...