제출 #154824

#제출 시각아이디문제언어결과실행 시간메모리
154824Nightlight동굴 (IOI13_cave)C++14
0 / 100
623 ms476 KiB
#include "cave.h"
#include <bits/stdc++.h>

bool found[70005];int ketemu;
bool ANS[70005];
int longs;

int binser1(){
	int l = 0, r = longs-1, res = -1;
	while(l <= r){
		int mid = (l+r)/2;
		int tmp[longs];
		for(int i = 0; i < longs; i++)tmp[i] = (l <= i && mid >= i) ? 1 : 0;
		if(tryCombination(tmp) > ketemu){
			r = mid+1;
			res = mid;
		}else l = mid;
	}
	return res;
}

int binser2(){
	int l = 0, r = longs-1, res = -1;
	while(l <= r){
		int mid = (l+r)/2;
		int tmp[longs];
		for(int i = 0; i < longs; i++)tmp[i] = (l <= i && mid >= i) ? 0 : 1;
		if(tryCombination(tmp) > ketemu){
			r = mid+1;
			res = mid;
		}else l = mid;
	}
	return res;
}


void exploreCave(int N) {
	int Switch[N];
	int door[N];
	longs = N;
	for(ketemu = 0; ketemu < N; ketemu++){
		int res = binser1();
		if(res != -1){
			door[ketemu] = res;
			ANS[res] = 1;
			found[res] = 1;
			Switch[res] = 1;
			continue;
		}
		res = binser2();
		door[ketemu] = res;
		Switch[res] = 1;
		found[res] = 1;
	}
    answer(Switch, door);
}
#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...