제출 #1131584

#제출 시각아이디문제언어결과실행 시간메모리
1131584altern23동굴 (IOI13_cave)C++20
100 / 100
357 ms572 KiB
#include <bits/stdc++.h>
#include "cave.h"
using namespace std;

int ans[5005], halleluya[5005], v[5005], jawab[5005], vis[5005];
void exploreCave(int N){	
    for(int i = 0; i < N; i++){
    	for(int j = 0; j < N; j++){
			if(vis[j]) v[j] = halleluya[j];
			else v[j] = 1;
		}

    	int id = (tryCombination(v) == i);
		int lf = 0, rg = N - 1, now = -1;
		for(;lf <= rg;){
			int mid = (lf + rg) / 2;
			for(int j = 0; j < N; j++){
				if(vis[j]){
					jawab[j] = halleluya[j];
					continue;
				}
				if(j <= mid){
					jawab[j] = id;
				}
				else{
					jawab[j] = (id ^ 1);
				}
			}
			if(tryCombination(jawab) == i){ 
				now = mid;
				rg = mid - 1;
			}
			else lf = mid + 1;
		}
		
		ans[now] = i;
		halleluya[now] = id ^ 1;
		vis[now] = 1;
	}
	
	answer(halleluya, ans);
}

/*
switch
0 0 0 0 0 0 --> 3
1 1 1 1 1 1 --> 0

1 1 1 0 0 0 --


pintu 0 --> 4 (udah tau)
pintu 1 --> 2

switch: 0 1 2 3 5 6 7 8 9
ng
*/
#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...