Submission #876311

#TimeUsernameProblemLanguageResultExecution timeMemory
876311abczz커다란 상품 (IOI17_prize)C++14
0 / 100
1 ms600 KiB
#include "prize.h"
#include <iostream>
#define ll long long

using namespace std;

ll f = -1;
vector <int> R;
void solve(ll l, ll r, ll ql, ll qr) {
	if (l > r || ql + qr == R[0] + R[1]) return;
	ll mid = (l+r)/2;
	for (int i=mid; i<=r; ++i) {
		auto u = ask(i);
		if (!u[0] && !u[1]) {
			f = i;
			return;
		}
		else if (u[0]+u[1] == R[0]+R[1]) {
			solve(l, mid-1, ql, u[1]+(i-mid));
			if (f != -1) return;
			solve(i+1, r, u[0], qr);
			return;
		}
	}
	solve(l, mid-1, ql, qr+(r-mid+1));
}

void get(ll l, ll r) {
	if (l == r) {
		R = ask(l);
		return;
	}
	ll mid = (l+r+1)/2;
	auto u = ask(mid);
	if (u[0] != mid) get(l, mid-1);
	else get(mid, r);
}

int find_best(int n) {
	solve(0, n-1, 0, 0);
	return f;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...