Submission #628496

#TimeUsernameProblemLanguageResultExecution timeMemory
628496kingmoshePrisoner Challenge (IOI22_prison)C++17
0 / 100
0 ms212 KiB
//#include "prison.h" #include <vector> #include <iostream> int get_bit_value(int num, int bit_id) { if (bit_id < 0) { return 0; } if (bit_id == 0) { return num % 2; } return get_bit_value(num / 2, bit_id - 1); } int get_maximal_bit_id(int num) { if (num < 2) { return 1; } return 1 + get_maximal_bit_id(num / 2); } std::vector<std::vector<int>> devise_strategy(int N) { int x = 40; std::vector<std::vector<int>> s(x + 1, std::vector<int>(x + 1)); for (int i = 0; i <= x; i++) { for (int j = 0; j <= x; j++) { s[i][j] = 0; } } for (int i = 0; i <= x; i++) { if (i % 3 == 0) { s[i][0] = 0; } else { s[i][0] = 1; } } int bit_id = get_maximal_bit_id(N); for (int i = 0; i <= x; i++) { bool looking_at_a = false; if (i % 3 == 0) { looking_at_a = true; if (i != 0) { bit_id -= 1; } } for (int j = 1; j <= N; j++) { int cur_bit_value = get_bit_value(j, bit_id); if (looking_at_a) { s[i][j] = i + 1 + cur_bit_value; } else { int last_bit_value = (i % 3) - 1; if (last_bit_value != cur_bit_value) { if (last_bit_value > cur_bit_value) { s[i][j] = -1; } else { s[i][j] = -2; } } else { s[i][j] = i + 1; if (i % 3 == 1) { s[i][j] += 1; } } } } } return s; } /*int main() { std::vector<std::vector<int>> s = devise_strategy(3); for (int i = 0; i < s.size(); i++) { for (int j = 0; j < s[i].size(); j++) { std::cout << s[i][j] << " "; } std::cout << std::endl; } std::cout << "cool" << std::endl; }//*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...