제출 #1325097

#제출 시각아이디문제언어결과실행 시간메모리
1325097eri16죄수들의 도전 (IOI22_prison)C++20
56 / 100
9 ms1284 KiB
#include<bits/stdc++.h>
#include "prison.h"

using namespace std;

vector<vector<int>> devise_strategy (int n){
    vector<vector<int>> ans(27, vector<int>(n+1));
     
    ans[0][0]=0; 
        
    for (int i=1; i<=n; i++){
        if (i<=2500){ans[0][i]=1;}
        if (i>2500){ans[0][i]=2;}
    }
    
    //0 / 1,2 / 3,4 
    
    for (int i=1; i<=26; i++){
        if (((i-1)/2)%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)/2;
            
            while (depth--){
                int m = (l+r)/2;
                
                if (j<=m){r=m;}
                if (j>m){l=m+1;}
            }
            
            int st1 = (i-1)%2;
            int st2;
            
            int m = (l+r)/2;
                
            if (j<=m){st2=0;r=m;}
            else{st2=1;l=m+1;}
            
            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 m = (l+r)/2;
                
                if (j<=m){st2=0;}
                else{st2=1;}                

                ans[i][j]=((i-1)/2+1)*2+1+st2;
                if (ans[i][j]>26){ans[i][j]=0;}
            }
        }
    }
        
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...