제출 #1232047

#제출 시각아이디문제언어결과실행 시간메모리
1232047RakhimovAmir죄수들의 도전 (IOI22_prison)C++20
65 / 100
7 ms1364 KiB
#include "prison.h" #include <bits/stdc++.h> using namespace std; vector<vector<int>> devise_strategy(int N) { vector<vector<int>> v; int cnt = 1, nw = 0, MX = 12; vector<pair<int, int>> num; vector<vector<int>> put; vector<int> which; which.push_back(0); num.push_back({0, 0}); put.resize(MX + 1); for (int i = MX; i >= 1; i--) { num.push_back({i, 0}); put[i].push_back(num.size() - 1); num.push_back({i, 1}); put[i].push_back(num.size() - 1); which.push_back(nw); which.push_back(nw); nw ^= 1; } v.resize(num.size()); v[0].push_back(0); // cout << "0 "; for (int i = 1; i <= N; i++) { if (i == 0) { v[0].push_back(-2); continue; } v[0].push_back(((i & (1 << MX)) > 0) + 1); // cout << v[0].back() << " "; } // cout << "\n"; for (int i = 1; i < num.size(); i++) { int get = num[i].second, ff = num[i].first; // cout << "kers " << num[i].first << " " << num[i].second << "\n"; v[i].push_back(which[i] ^ 1); // cout << v[i][0] << " "; for (int j = 1; j <= N; j++) { if (j == N) { v[i].push_back(-((which[i]) + 1)); continue; } int bit = ((j & (1 << ff)) > 0); if ((bit < get)) { v[i].push_back(-((which[i] ^ 1) + 1)); } else if (bit > get) { v[i].push_back(-((which[i]) + 1)); } else { if (ff > 1) v[i].push_back(put[(ff - 1)][(((1 << (ff - 1)) & j) > 0)]); if (ff == 0) v[i].push_back(-1); if (ff == 1) { if ((((1 << (ff - 1)) & j) > 0)) v[i].push_back(-((which[i]) + 1)); else v[i].push_back(-((which[i] ^ 1) + 1)); } } // cout << v[i].back() << " "; } // cout << "\n"; } return v; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...