제출 #1325114

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

using namespace std;

vector<vector<int>> devise_strategy (int n){
    vector<vector<int>> ans(24, 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<=23; 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;
            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]=-2;}
                    else if (ans[i][j]==24){ans[i][j]=-2;}
                    else {ans[i][j]=23;}
                }
            }
        }
    }
        
    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...