이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "cave.h"
#include<bits/stdc++.h>
void exploreCave(int N) {
    
    /* ... */
    using namespace std;
    int correct_pos_of_door[N];
    int switch_of_door[N];
    int correct_pos_of_switch[N];
    memset(correct_pos_of_switch,-1,sizeof correct_pos_of_switch);
    memset(correct_pos_of_door,-1,sizeof correct_pos_of_door);
    memset(switch_of_door,-1,sizeof switch_of_door);
    
    
    
    
    //lets try to find correct pos of 1 door and correct pos of switch corresponding to it
    
    int combi[N];
    for(int i=0;i<N;i++) combi[i]=0;
    
    for(int door=0;door<N;door++){
        
        int switch_range_l=0,switch_range_r=N-1;
        
        int res=tryCombination(combi);
        
        if(res==door) correct_pos_of_door[door]=1;
        else correct_pos_of_door[door]=0;
        
        
        
        while(switch_range_l!=switch_range_r){
            int m=(switch_range_l+switch_range_r)/2;
            
            //either my switch corresponding to door will be in left part or right part
            
            //making all left part one for positions i dont know in left part
            int temp[N];
            for(int i=0;i<N;i++) temp[i]=combi[i];
            
            if(correct_pos_of_door[door]){
                for(int i=switch_range_l;i<=m;i++){
                    if(correct_pos_of_switch[i]==-1) temp[i]=1;
                }
                
                
            }
            else{
                for(int i=m+1;i<=switch_range_r;i++){
                    if(correct_pos_of_switch[i]==-1) temp[i]=1;
                }
            }
            
            res=tryCombination(temp);
            
            if(res==door) switch_range_l=m+1;
            else switch_range_r=m-1;
            
            
        }
        
        switch_of_door[door]=switch_range_l;
        correct_pos_of_switch[switch_range_l]=correct_pos_of_door[door];
        combi[switch_range_l]=correct_pos_of_switch[switch_range_l];
        
        
    }
    
    answer(correct_pos_of_switch,switch_of_door);
    
    
    
    
    
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |