Submission #209432

#TimeUsernameProblemLanguageResultExecution timeMemory
209432TAISA_The Big Prize (IOI17_prize)C++14
20 / 100
81 ms2040 KiB
#include "prize.h"
#include <bits/stdc++.h>
using namespace std;
using P=pair<int,int>;
/*vector<int> s;
vector<int> ask(int id){
	cout<<id<<endl;
	int a,b;cin>>a>>b;
	vector<int> res{a,b};
	return res;
}*/
int find_best(int n) {
	vector<int> a;
	vector<P> v(n,P(-1,-1));
	int en=n;
	int cnt=0;
	int ma=0;
	for(int i=0;i<min(n,450);i++){
		a=ask(i);
		ma=max(ma,a[0]+a[1]);
		v[i]=P(a[0],a[1]);
		if(a[0]+a[1]==0){
			return i;
		}
	}
	while(1){
		int ok=0,ng=en;
		while(ng-ok>1){
			int mid=(ok+ng)/2;
			if(v[mid].first==-1){
				a=ask(mid);
				v[mid]=P(a[0],a[1]);
				if(a[0]+a[1]==0){
					return mid;
				}
			}
			if(v[mid].second==cnt){
				if(v[mid].second+v[mid].first==ma){
					ng=mid;
				}else{
					ok=mid;
				}
			}else{
				ok=mid;
			}
		}
		en=ok;
		cnt++;
	}
	return 0;
}
/*int main(){
	int n;cin>>n;
	s.resize(n);
	for(int i=0;i<n;i++){
		cin>>s[i];
	}
	cout<<find_best(n)<<endl;
}*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...