Submission #789971

#TimeUsernameProblemLanguageResultExecution timeMemory
789971ono_de206Prisoner Challenge (IOI22_prison)C++17
65 / 100
10 ms1236 KiB
#include "prison.h" #include<bits/stdc++.h> using namespace std; #define in insert #define all(x) x.begin(),x.end() #define pb push_back #define eb emplace_back #define ff first #define ss second //#define int long long typedef long long ll; typedef vector<int> vi; typedef set<int> si; typedef multiset<int> msi; typedef pair<int, int> pii; typedef vector<pii> vpii; vector<vector<int>> devise_strategy(int n) { vector<vector<int>> ret; ret.pb(vector<int>{0}); for(int i = 1; i <= n; i++) { if(i & (1 << 12)) ret[0].pb(2); else ret[0].pb(1); } int bit = 12, now = 1; // 0 = A 1 = B while(bit > 0) { ret.pb(vector<int>{now}); for(int i = 1; i <= n; i++) { if((i >> bit) & 1) ret.back().pb(now ? -1 : -2); else { if((i >> (bit - 1)) & 1) { if(bit == 1) ret.back().pb(now ? -1 : -2); else ret.back().pb(ret.size() + 2); } else { if(bit == 1) ret.back().pb(now ? -2 : -1); else ret.back().pb(ret.size() + 1); } } } ret.pb(vector<int>{now}); for(int i = 1; i <= n; i++) { if(!((i >> bit) & 1)) ret.back().pb(now ? -2 : -1); else { if((i >> (bit - 1)) & 1) { if(bit == 1) ret.back().pb(now ? -1 : -2); else ret.back().pb(ret.size() + 1); } else { if(bit == 1) ret.back().pb(now ? -2 : -1); else ret.back().pb(ret.size()); } } } bit--; now ^= 1; } return ret; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...