Submission #1231919

#TimeUsernameProblemLanguageResultExecution timeMemory
1231919dssfsuper2동굴 (IOI13_cave)C++20
0 / 100
31 ms324 KiB
#include "cave.h"
using namespace std;

bool isao(int res, int ser){
    return (res==-1 || res>ser);
}
int n;
bool query(int left, int right, int door, int norm[]){
	int norm2[n];
	for(int i = 0;i<n;i++){
		norm2[i]=norm[i];
	}
    for(int i = left;i<=right;i++)norm2[i]=1;
    return isao(tryCombination(norm2), door);
}
void exploreCave(int N) {
    n=N;
    int norm[n];
    for(int i = 0;i<N;i++){
        norm[i]=0;
    }
    int correct[n], doors[n];
	for(int i = 0;i<n;i++){
		correct[i]=0;
		doors[i]=0;
	}
    for(int i = 0;i<N;i++){
        bool norp=query(0, -1, i, norm);
        int left = 0;int right=N-1;
        for(int it = 0;it<13;it++){
			int mid = (left+right)/2;
			if(left==right)break;
            bool x = query(left, mid, i, norm);
            bool res = x==norp;
            if(res){
                left=mid+1;
            }
            else{
                right=mid;
        	}
			
		}
        doors[left]=i;
        correct[left]=(norp? 0 : 1);
        norm[left]=correct[left];
    }
    answer(correct, doors);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...