| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1325120 | eri16 | Prisoner Challenge (IOI22_prison) | C++20 | 1 ms | 332 KiB |
#include<bits/stdc++.h>
#include "prison.h"
using namespace std;
vector<vector<int>> devise_strategy (int n){
vector<vector<int>> ans(23, vector<int>(n+1));
ans[0][0]=0;
for (int i=1; i<=n; i++){
if (i<=1667){ans[0][i]=1;}
else if (i<=3334){ans[0][i]=2;}
else {ans[0][i]=3;}
}
//0 / 1,2,3 / 4,5,6
for (int i=1; i<=22; i++){
if (((i-1)/3)%2==0){ans[i][0]=1;}
else{ans[i][0]=0;}
for (int j=1; j<=n; j++){
int l=1;
int r=5000;
int depth = (i-1)/3;
while (depth--){
int m1 = l + (r-l)/3;
int m2 = r - (r-l)/3;
if (j<=m1){r=m1;}
else if (j<=m2){r=m2;l=m1+1;}
else{l=m2+1;}
}
int st1 = (i-1)%3;
if (i==22){st1++;}
int st2;
int m1 = l + (r-l)/3;
int m2 = r - (r-l)/3;
if (j<=m1){r=m1;st2=0;}
else if (j<=m2){r=m2;l=m1+1;st2=1;}
else{l=m2+1;st2=2;}
if (st1!=st2){
if (st2>st1){ans[i][j]=(2-ans[i][0])*-1;}
else{ans[i][j]=(ans[i][0]+1)*-1;}
}
else{
int m1 = l + (r-l)/3;
int m2 = r - (r-l)/3;
if (j<=m1){st2=0;}
else if (j<=m2){st2=1;}
else{st2=2;}
ans[i][j]=((i-1)/3+1)*3+1+st2;
// deal with this
if (ans[i][j]>21){
//cout<<"WDAWD";
if (ans[i][j]==22){ans[i][j]=(ans[i][0]+1)*-1;}
else if (ans[i][j]==24){ans[i][j]=(2-ans[i][0])*-1;}
else{ans[i][j]=22;}
}
}
}
}
return ans;
}| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
