#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 time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |