Submission #1177791

#TimeUsernameProblemLanguageResultExecution timeMemory
1177791PagodePaivaPrisoner Challenge (IOI22_prison)C++20
90 / 100
8 ms1096 KiB
#include "prison.h" #include<bits/stdc++.h> using namespace std; std::vector<std::vector<int>> devise_strategy(int n) { vector <vector <int>> res; int minval = 21, maxval = -1; for(int i = 0;i <= 21;i++){ vector <int> ans; ans.push_back(((i+1)/2)%2); for(int val = 1;val <= n;val++){ int l = 1, r = n; int j = (i+1)/2; while(j > 0){ if(val == l){ ans.push_back(-ans[0]-1); break; } if(val == r){ ans.push_back(-(ans[0]^1)-1); break; } l++; r--; int t = (l+r)/2; if(l <= val and val <= t){ if(j == 1){ if(i%2 == 0){ ans.push_back(-ans[0]-1); break; } } r = t; } else{ if(j == 1){ if(i%2 == 1){ ans.push_back(-(ans[0]^1)-1); break; } } l = t+1; } j--; } if(j > 0) continue; //if(i == 1) cout << i << ' ' << val << ' ' << l << ' ' << r << '\n'; if(val == l) ans.push_back(-ans[0]-1); else if(val == r) ans.push_back(-(ans[0]^1)-1); else{ l++; r--; int t = (l+r)/2; if(l <= val and val <= t){ int x = (i+1)/2; ans.push_back(2*x+1); } else{ int x = (i+1)/2; ans.push_back(2*x+2); } } } res.push_back(ans); } return res; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...