제출 #758687

#제출 시각아이디문제언어결과실행 시간메모리
758687amunduzbaev죄수들의 도전 (IOI22_prison)C++17
80 / 100
10 ms980 KiB
#include "prison.h" #include "bits/stdc++.h" using namespace std; #ifndef EVAL #include "grader.cpp" #endif #define ar array typedef long long ll; typedef int32_t ii; //~ #define int ll vector<vector<ii>> devise_strategy(ii n) { vector<vector<ii>> a(1, vector<ii>(n + 1)); auto get = [&](int x, int b){ while(b){ x /= 3; b--; } return x % 3; }; a[0][0] = 1; for(int i=1;i<=n;i++){ a[0][i] = a.size() + get(i, 7); } vector<int> b_(n + 1, 0); a.push_back(b_); a.push_back(b_); a.push_back(b_); for(int b=6;b>0;b--){ for(int j=(int)a.size() - 3;j<(int)a.size();j++){ int prev = (j - 1) % 3; a[j][0] = b&1; for(int i=1;i<=n;i++){ int cur = get(i, b + 1); if(cur < prev){ if(b&1) a[j][i] = -2; else a[j][i] = -1; } if(prev < cur){ if(b&1) a[j][i] = -1; else a[j][i] = -2; } if(prev == cur){ a[j][i] = a.size() + get(i, b); } } } a.push_back(b_); a.push_back(b_); a.push_back(b_); } for(int j=(int)a.size() - 3;j<(int)a.size();j++){ int prev = (j - 1) % 3; a[j][0] = 0; for(int i=1;i<=n;i++){ int cur = get(i, 1); if(cur < prev){ a[j][i] = -1; } if(prev < cur){ a[j][i] = -2; } if(prev == cur){ int nxt = get(i, 0); if(nxt == 0){ a[j][i] = -1; } if(nxt == 2){ a[j][i] = -2; } if(nxt == 1){ a[j][i] = a.size(); } } } } a.push_back(b_); a.back()[0] = 1; for(int i=1;i<=n;i++){ int cur = get(i, 0); if(cur == 0){ a.back()[i] = -2; } if(cur == 2){ a.back()[i] = -1; } } return a; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...