Submission #1297431

#TimeUsernameProblemLanguageResultExecution timeMemory
1297431Jawad_Akbar_JJThe Big Prize (IOI17_prize)C++20
0 / 100
26 ms400 KiB
#include <iostream>
#include <vector>
#include "prize.h"

using namespace std;
int tot;
vector<int> Ans, res;

int Solve(int l, int r, int k){
	vector<int> rs;
	if (l == r)
		return 0;

	int mid = (l + r) / 2, C = 0;
	rs = ask(mid);

	if (rs[0] + rs[1] != tot){
		C = Solve(l, mid, k) + 1;
		Ans.push_back(mid);
		C += Solve(mid+1, r, k - C);
		return C;
	}
	
	C = Solve(l, mid, k);
	C += Solve(mid+1, r, rs[1]);
	return C;
}

int find_best(int n){
	srand(time(0));

	for (int i=1;i<=20;i++){
		int id = rand() % n;
		res = ask(id);
		tot = max(tot, res[0] + res[1]);
	}

	Solve(0, n, tot);

	for (int i : Ans){
		res = ask(i);
		if (res[0] + res[1] == 0)
			return i;
	}
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...