이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "cave.h"
#include "bits/stdc++.h"
using namespace std;
void exploreCave(int N) {
/* ... */
int correct_pos_of_door[N];
int door_of_switch[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(door_of_switch,-1,sizeof door_of_switch);
//lets try to find correct pos of 1 door and correct pos of switch corresponding to it
int combination[N];
for(int i=0;i<N;i++) combination[i]=0;
for(int door=0;door<N;door++){
int l=0,r=N-1;
int res=tryCombination(combination);
if(res==door) correct_pos_of_door[door]=1;
else correct_pos_of_door[door]=0;
int ind=N-1;
while(l<=r){
int m=(l+r)/2;
//either my switch corresponding to door will be in left part or right part
int temp[N];
for(int i=0;i<N;i++) temp[i]=combination[i];
//making left to be correct
if(correct_pos_of_door[door]){
for(int i=0;i<=m;i++){
if(correct_pos_of_switch[i]==-1) temp[i]=1;
}
}
else{
for(int i=m+1;i<N;i++){
if(correct_pos_of_switch[i]==-1) temp[i]=1;
}
}
res=tryCombination(temp);
if(res==door){
l=m+1;
}
else{
ind=m;
r=m-1;
}
}
door_of_switch[ind]=door;
correct_pos_of_switch[ind]=correct_pos_of_door[door];
combination[ind]=correct_pos_of_door[door];
}
answer(correct_pos_of_switch,door_of_switch);
}
# | 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... |