Submission #706301

#TimeUsernameProblemLanguageResultExecution timeMemory
706301SamNguyenHotter Colder (IOI10_hottercolder)C++14
0 / 100
568 ms8072 KiB
#include "grader.h"
#include <bits/stdc++.h>
using namespace std;

const int HOTTER = 1, COLDER = -1, SAME = 0;

template <class Func>
int FIND_SMALLEST(int l, int r, Func f) {
	int res = r + 1;
	while (l <= r) {
		int m = (l + r) >> 1;
		if (f(m)) res = m, r = m - 1;
		else l = m + 1;
	}
	return res;
}

template <class Func>
int FIND_LARGEST(int l, int r, Func f) {
	int res = l - 1;
	while (l <= r) {
		int m = (l + r) >> 1;
		if (f(m)) res = m, l = m + 1;
		else r = m - 1;
	}
	return res;
}

int HC(int N) {
	Guess(1);
	int x = 1, y = N;
	while (x != y) {
		int id = Guess(y);
		if (abs(x - y) == 1) 
			return id == HOTTER ? y : x;

		int m = (x + y) >> 1;

		if (id == SAME)
			return m;

		if (id == HOTTER) {
			x = y;
			y = m;
		}
		else {
			Guess(x);
			y = m;
		}
	}

	return -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...