제출 #705311

#제출 시각아이디문제언어결과실행 시간메모리
705311danikoynovPrisoner Challenge (IOI22_prison)C++17
56 / 100
14 ms1156 KiB
#include "prison.h" #include <bits/stdc++.h> using namespace std; vector<std::vector<int>> devise_strategy(int N) { vector < vector < int > > strategy; int maxnum = 26; strategy.resize(maxnum + 1); for (int i = 0; i <= maxnum; i ++) strategy[i].resize(N + 1); strategy[0][0] = 0; for (int j = 1; j <= N; j ++) { if ((j & (1 << 12))) strategy[0][j] = 13; else strategy[0][j] = 26; } for (int i = 1; i <= maxnum; i ++) { if (i <= 13) { int bit = i - 1; if (bit % 2 == 0) { strategy[i][0] = 1; for (int j = 1; j <= N; j ++) { if ((j & (1 << bit)) == 0) strategy[i][j] = -2; else { if ((j & (1 << (bit - 1)))) strategy[i][j] = bit; else strategy[i][j] = bit + 13; } } } else { strategy[i][0] = 0; for (int j = 1; j <= N; j ++) { if ((j & (1 << bit)) == 0) strategy[i][j] = -1; else { if ((j & (1 << (bit - 1)))) strategy[i][j] = bit; else strategy[i][j] = bit + 13; } } } } else { int bit = i - 14; if (bit % 2 == 0) { strategy[i][0] = 1; for (int j = 1; j <= N; j ++) { if ((j & (1 << bit)) > 0) strategy[i][j] = -1; else { if ((j & (1 << (bit - 1)))) strategy[i][j] = bit; else strategy[i][j] = bit + 13; } } } else { strategy[i][0] = 0; for (int j = 1; j <= N; j ++) { if ((j & (1 << bit)) > 0) strategy[i][j] = -2; else { if ((j & (1 << (bit - 1)))) strategy[i][j] = bit; else strategy[i][j] = bit + 13; } } } } } /**for (int i = 0; i <= 26; i ++, cout << endl) for (int j = 1; j <= N; j ++) cout << strategy[i][j] << " "; cout << endl;*/ return strategy; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...