Submission #332054

#TimeUsernameProblemLanguageResultExecution timeMemory
332054shrek12357Cave (IOI13_cave)C++14
0 / 100
579 ms492 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <map>
#include <set>
#include <climits>
#include <cmath>
#include <fstream>
#include <queue>
#include <stack>
#include <bitset>
#include "cave.h"
using namespace std;
#define ll long long
//cin.tie(0);ios_base::sync_with_stdio(0); 
 
const int MAXN = 5005;
int N;
 
/*void exploreCave(int n) {
	int pos[MAXN];
	int ans[MAXN];
	for (int i = 0; i < n; i++) {
		pos[i] = 0;
		ans[i] = i;
	}
	int cnt = 0;
	while (true) {
		int num = tryCombination(pos);
		if (num == -1) {
			break;
		}
		cnt = num;
		pos[num] = (pos[num] + 1) % 2;
	}
	answer(pos, ans);
}*/
 
/*void exploreCave(int n) {
	int pos[MAXN];
	int ans[MAXN];
	for (int i = 0; i < n; i++) {
		ans[i] = -1;
		pos[i] = 0;
	}
	for (int i = 0; i < n; i++) {
		pos[i] = 1;
		ans[i] = tryCombination(pos);
		pos[i] = 0;
	}
	answer(pos, ans);
}*/
 
/*int tryCombination(int s[]) {
	for (int i = 0; i < N; i++) {
		cout << s[i] << endl;
	}
	int temp;
	cin >> temp;
	cout << endl;
	return temp;
}
 
void answer(int s[], int a[]) {
	for (int i = 0; i < N; i++) {
		cout << s[i] << endl;
	}
	for (int i = 0; i < N; i++) {
		cout << a[i] << endl;
	}
}*/
 
void exploreCave(int n) {
	N = n;
	int pos[MAXN];
	int ans[MAXN];
	for (int i = 0; i < n; i++) {
		pos[i] = 0;
		ans[i] = -1;
	}
	for (int i = 0; i < n; i++) {
		int lo = 0;
		int hi = n - 1;
		int cur = tryCombination(pos) == i;
		while (lo < hi) {
			int mid = (lo + hi) / 2;
			for (int j = lo; j <= mid; j++) {
				if (ans[j] == -1) {
					pos[j] = 1;
				}
			}
			int n1 = tryCombination(pos) == cur;
			if (n1) {
				hi = mid;
			}
			else {
				lo = mid + 1;
			}
			for (int j = 0; j <= mid; j++) {
				if (ans[j] == -1) {
					pos[j] = 0;
				}
			}
		}
		ans[lo] = i;
		pos[lo] = cur;
	}
	answer(pos, ans);
}
#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...