Submission #1315854

#TimeUsernameProblemLanguageResultExecution timeMemory
1315854LuvidiThe Big Prize (IOI17_prize)C++20
90 / 100
23 ms408 KiB
#include "prize.h"
#include <bits/stdc++.h>
using namespace std;

int find_best(int n) {
	vector<int> v;
	int mx=-1,id;
	for(int i=0;i<min(n,500);i++){
		auto t=ask(i);
		if(t[0]+t[1]>mx){
			mx=t[0]+t[1];
			id=i;
		}
	}
	for(int i=0;i<id;i++){
		v.push_back(i);
	}
	while(v.size()<mx){
		int l=0,r=n-1;
		if(!v.empty())l=v.back()+1;
		while(l<r){
			int m=l+r>>1;
			auto t=ask(m);
			if(t[0]+t[1]<mx||t[0]>v.size())r=m;
			else l=m+1;
		}
		v.push_back(l);
	}
	for(int i:v){
		auto t=ask(i);
		if(t[0]+t[1]==0)return i;
	}

	return -1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...