제출 #131936

#제출 시각아이디문제언어결과실행 시간메모리
131936junodeveloper동굴 (IOI13_cave)C++14
0 / 100
1028 ms516 KiB
#include "cave.h"
#include <bits/stdc++.h>
using namespace std;
int S[5010], D[5010], rev[5010];
int Try() {
	return tryCombination(S);
}
void exploreCave(int N) {
	memset(D, -1, sizeof(D));
	int s = 0, x, B, idx, tmp;
	while(1) {
		idx = Try();
		if(idx != -1) x = idx - s + 1;
		else x = N - s;
		B = sqrt((N - s) / x);
		vector<int> a;
		for(int i=0; i<N; i++) {
			if(D[i] == -1) {
				a.push_back(i);
				if(a.size() == B) {
					for(auto& j : a) S[j] ^= 1;
					tmp = Try();
					if(idx != tmp) {
						for(auto& j : a) S[j] ^= 1;
						for(auto& j : a) {
							S[j] ^= 1;
							int t = Try();
							if(t < idx || idx == -1) {
								rev[t] = j;
								D[j] = t;
							} else if(idx < t) {
								rev[idx] = j;
								D[j] = idx;
							}
						}
						for(auto& j : a) S[j] ^= 1;
					}
					for(auto& j : a) S[j] ^= 1;
					a.clear();
				}
			}
		}
	}
	answer(S, D);
}

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

cave.cpp: In function 'void exploreCave(int)':
cave.cpp:20:17: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     if(a.size() == B) {
        ~~~~~~~~~^~~~
#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...