Submission #626482

#TimeUsernameProblemLanguageResultExecution timeMemory
626482MounirThe Big Prize (IOI17_prize)C++14
0 / 100
77 ms336 KiB
#include "prize.h"
#include <bits/stdc++.h>
using namespace std;

vector<int> ask_res(int i){
	vector<int> rep =  ask(i);
	//if (i != 7) cout << "query " << i << " " << rep[0] << " " << rep[1] <<  endl;
	return rep;
}

int find_best(int n) {
	int dernier = n/2;
	vector<int> resDernier = ask_res(dernier);
	while (resDernier[0] != 0 || resDernier[1] != 0){
		int badLeft = dernier - resDernier[0], badRight = n - resDernier[1] - dernier - 1;
		//cout << "iter " << badLeft << " " << badRight << " " << resDernier[0] << " " << resDernier[1] << endl;
		if ((badLeft < badRight && resDernier[0] != 0) || resDernier[1] == 0){
			vector<int> resCur = resDernier;
		//	cout << "ylo" << endl;
			while (resCur[0] + resCur[1] >= resDernier[0] + resDernier[1]){
				dernier -= resCur[0];
				resCur = ask_res(dernier);
			}
			resDernier = resCur;
		}
		else {
			vector<int> resCur = resDernier;
			while (resCur[0] + resCur[1] >= resDernier[0] + resDernier[1]){
			//	if (dernier != 7)
			//		cout << "ans " << resCur[0] + resCur[1] << " " << resDernier[0] + resDernier[1] << endl;
				dernier += resCur[1];
				resCur = ask_res(dernier);
			}
		//	cout << "fini"  << endl;
			resDernier = resCur;
		}
	//	resDernier = resCur;
	}	
	return dernier;
	//return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...