제출 #235348

#제출 시각아이디문제언어결과실행 시간메모리
235348crossing0ver동굴 (IOI13_cave)C++17
100 / 100
451 ms760 KiB
#include<bits/stdc++.h>
#include "cave.h"
using namespace std;
int n,type[5005],P[5000],oc[5000],C[5000];

int  ask(int S[]) {
	int x =  tryCombination(S);
	if (x == -1) x = n;
	return x;
}
   /*
void get_type (int pos,int A[]) {
	int l = 0, r = n - 1;
	int x = ask(A);
	if (pos <= x) type[pos] = 0,A[pos] = 0;
			else type[pos] = 1, A[pos] = 1;
	
	while (l != r) {
		int m = (l + r)/2;
		for (int i = l; i <= m; i++) if (!oc[i]) A[i]^=1;
		int x = ask(A);
		if (pos <= x) {
			l = m + 1;		
		}
		else r = m;
		for (int i = l; i <= m; i++) if (!oc[i]) A[i]^=1;
	}
/*	if (l == r - 1) {
		if (oc[l]) x = r;
		else if (oc[r]) x = l;
		else {
			A[l]^=1;
			int t = ask(A);
			if (pos <= t) x = r;
			else x = l;
			A[l]^=1; 
		}
	}     
	x = l;
	oc[x] = 1;
	C[x] = type[pos]; 
	P[x] = pos;
}     */


void exploreCave(int N) {
	n = N;
	int A[N];
	for (int i =0 ; i < n; i++) 
		A[i] = 0;
	for (int pos = 0;pos < n; pos++) {
		int l = 0, r = n - 1;
	int x = ask(A);
	bool flag = 0;
	for (int i = 0; i < n; i++) if (!oc[i]) flag = A[i];
	if (pos < x) type[pos] = flag;
			else type[pos] = !flag; 
	for (int i = 0; i < n; i++) if (!oc[i]) A[i] = type[pos];
	while (l != r) {
		int m = (l + r)/2;
		for (int i = l; i <= m; i++) if (!oc[i]) A[i]^=1;
		int x = ask(A);
		if (pos < x) {
			for (int i = l; i <= m; i++) if (!oc[i]) A[i]^=1;
			l = m + 1;		
		}
		else {r = m;
		for (int i = l; i <= m; i++) if (!oc[i]) A[i]^=1; }
	}
	x = l;
	oc[x] = 1;
	C[x] = type[pos]; 
	P[x] = pos;
	}
	int S[N],D[N];
	for (int i = 0; i < n; i++)
		S[i] = C[i], 
		D[i] = P[i];
	answer(S, D);
		
}

컴파일 시 표준 에러 (stderr) 메시지

cave.cpp:28:1: warning: "/*" within comment [-Wcomment]
 /* if (l == r - 1) {
#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...