제출 #1226519

#제출 시각아이디문제언어결과실행 시간메모리
1226519ericl23302죄수들의 도전 (IOI22_prison)C++20
10 / 100
1 ms580 KiB
#include "prison.h" #include <bits/stdc++.h> using namespace std; std::vector<std::vector<int>> devise_strategy(int N) { vector<int> powers = {256, 128, 64, 32, 16, 8, 4, 2, 1}; vector<vector<int>> res = {{0}}; for (int i = 0; i < powers[0] && res[0].size() <= N; ++i) res[0].push_back(1); for (int i = 0; i < powers[0] && res[0].size() <= N; ++i) res[0].push_back(2); for (int i = 0; i < powers.size(); ++i) { for (int j = 0; j < 2; ++j) { vector<int> cur = {(i + 1) % 2}; int curNext = i * 2 + 3; int bagRet = -1; if ((i + 1) % 2) bagRet = -2; for (int k = 0; k < N; ++k) { int val = k; for (int p = 0; p < i; ++p) { int power = powers[p]; if (val >= power) val -= power; } int curDiv = powers[i]; if (val < curDiv && j) cur.push_back(bagRet); else if (val >= curDiv && !j) cur.push_back(-3 - bagRet); else { if (i < powers.size() - 1) { if (val >= curDiv) val -= curDiv; curDiv = powers[i + 1]; if (val < curDiv) cur.push_back(curNext); else cur.push_back(curNext + 1); } else cur.push_back(0); } } res.push_back(cur); } } // int cnt = 0; // for (auto &i : res) { // cout << cnt++ << ' '; // for (auto &j : i) cout << j << ' '; // cout << endl; // } return res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...