제출 #97634

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

using namespace std;

const int MAX_N = 5000;

vector<int> pos;
int combination[MAX_N];
int S[MAX_N], D[MAX_N];

void exploreCave(int N) {
	for(int i = 0; i < N; ++i)
		pos.push_back(i);
	
	for(int i = 0; i < N; ++i) {
		for(auto it: pos)
			combination[it] = 1;
		int rez = tryCombination(combination);
		bool correctState = false;
		if(rez == -1 || rez > i)
			correctState = true;

		int st = -1, dr = pos.size() - 1;
		while(dr - st > 1) {
			int mid = (st + dr) / 2;
			for(int i = 0; i <= mid; ++i)
				combination[pos[i]] = correctState;
			for(int i = mid + 1; i < pos.size(); ++i)
				combination[pos[i]] = 1 - correctState;

			int rez = tryCombination(combination);
			if(rez == -1 || rez > i)
				dr = mid;
			else
				st = mid;
		}
		
		D[pos[dr]] = i;
		S[pos[dr]] = correctState;
		combination[pos[dr]] = correctState;
		pos.erase(pos.begin() + dr);
	}

	answer(S, D);
}

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

cave.cpp: In function 'void exploreCave(int)':
cave.cpp:29:27: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
    for(int i = mid + 1; i < pos.size(); ++i)
                         ~~^~~~~~~~~~~~
#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...