제출 #773358

#제출 시각아이디문제언어결과실행 시간메모리
773358Magikarp4000죄수들의 도전 (IOI22_prison)C++17
65 / 100
12 ms1160 KiB
#include "prison.h" #include <bits/stdc++.h> using namespace std; #define OPTM ios_base::sync_with_stdio(0); cin.tie(0); #define INF int(1e9+7) #define ln '\n' #define ll long long #define ull unsigned long long #define ui unsigned int #define us unsigned short #define FOR(i,s,n) for (int i = s; i < n; i++) #define FORR(i,n,s) for (int i = n; i > s; i--) #define FORX(u, arr) for (auto u : arr) #define PB push_back #define in(v,x) (v.find(x) != v.end()) #define F first #define S second #define PII pair<int, int> #define PLL pair<ll, ll> #define UM unordered_map #define US unordered_set #define PQ priority_queue #define ALL(v) v.begin(), v.end() const ll LLINF = 1e18+1; const int MAXM = 24, LOG = 12; std::vector<std::vector<int>> devise_strategy(int n) { vector<vector<int>> v(MAXM+1,vector<int>(n+1,0)); FOR(j,1,n+1) { v[0][j] = (j&(1<<(LOG))) ? 1 : 2; } for (int i = 1; i < MAXM+1; i += 1) { int t = ((i+1)/2)%2, pos = LOG-((i-1)/2), val = i%2; v[i][0] = t; FOR(j,1,n+1) { int cur = j&(1<<pos); if (cur && !val) v[i][j] = t ? -1 : -2; else if (!cur && val) v[i][j] = t ? -2 : -1; else if (pos-1 == 0) v[i][j] = j&1 ? -2 : -1; else v[i][j] = j&(1<<(pos-1)) ? min(MAXM,(i+1)/2*2+1) : min(MAXM,(i+1)/2*2+2); } } return v; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...