제출 #196896

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

const int MAXN = 5e3 + 5;

int chk(int arr[]) { return tryCombination(arr); }

int done, dc[MAXN], door[MAXN], ans[MAXN], sw[MAXN];
int one[MAXN], A[MAXN];

void f(int l, int r, int col) {
	if(l == r) {
		done++;
		dc[done] = 1-col;
		door[done] = l;
		return;
	}
	int mid = l + r >> 1;
	for(int i=0; i<l; i++) A[i] = 1-col;
	for(int i=l; i<=mid; i++) A[i] = col;
	for(int i=mid+1; i<=r; i++) A[i] = 1-col;
	for(int i=0; i<=done; i++) A[door[i]] = dc[i];
	if(chk(A) == done+1) f(l, mid, col);
	else f(mid+1, r, col);
} 

void exploreCave(int N) {
	done = -1;
    for(int i=0; i<N; i++) one[i] = 1;
    for(int i=0; i<N; i++) {
		for(int j=0; j<=done; j++) one[door[j]] = dc[j];
		if(chk(one) == done+1) f(0, N-1, 1);
		else f(0, N-1, 0);
    }
	for(int i=0; i<N; i++) ans[door[i]] = i;
	for(int i=0; i<N; i++) sw[door[i]] = dc[i];
	answer(sw, ans);
}

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

cave.cpp: In function 'void f(int, int, int)':
cave.cpp:19:14: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
  int mid = 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...