Submission #824947

#TimeUsernameProblemLanguageResultExecution timeMemory
824947alvingogoPrisoner Challenge (IOI22_prison)C++17
65 / 100
13 ms1620 KiB
#include "prison.h"
#include <bits/stdc++.h>
#define fs first
#define sc second
#define p_q priority_queue
using namespace std;

int n;
vector<vector<int> > ans;
vector<vector<int>> devise_strategy(int N) {
    n=N;
    vector<int> s(n+1);
    s[0]=0;
    int m=4096;
    for(int i=1;i<=n;i++){
        if(i<m){
            s[i]=1;
        }
        else{
            s[i]=2;
        }
    }
    ans.push_back(s);
    int fl=1;
    int q=3;
    for(;m>1;m>>=1){
        vector<int> x[2]={vector<int>(n+1),vector<int>(n+1)};
        x[0][0]=x[1][0]=fl;
        for(int i=1;i<=n;i++){
            if(i%(2*m)>=m){
                x[0][i]=fl-2;
                if(m==2){
                    x[1][i]=(i%m==0)?(-1-fl):(fl-2);
                }
                else{
                    x[1][i]=q+((i%m)>=(m/2)); 
                }   
            }
            else{
                if(m==2){
                    x[0][i]=(i%m==0)?(-1-fl):(fl-2);
                }
                else{
                    x[0][i]=q+((i%m)>=(m/2)); 
                }
                x[1][i]=-1-fl;
            }
        }
        ans.push_back(x[0]);
        ans.push_back(x[1]);
        fl^=1;
        q+=2;
    }
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...