제출 #713049

#제출 시각아이디문제언어결과실행 시간메모리
713049dungnguyenn_05The Big Prize (IOI17_prize)C++17
90 / 100
120 ms344 KiB
#include "prize.h"
#include<bits/stdc++.h>
#define fs first
#define sc second
#define pb push_back
#define all(x) x.begin(),x.end()
using namespace std;
typedef vector<int> vi;
typedef pair<int,int> pi;

vector<pi> srt;
int mx;

int find_best(int n) 
{
	for(int i=0;i<min(n,500);i++)
	{
		vi ans=ask(i);
		srt.pb({ans[0]+ans[1],i});
	}

	sort(all(srt));
	mx=srt.back().fs;

	srt.clear();

	int st=0;
	while(st<n)
	{
		vi ans=ask(st);

		if(ans[0]+ans[1]!=mx)
		{
			srt.pb({ans[0]+ans[1],st});
			st++;
		}
		else
		{
			int l=st,r=n-1,pos;
			while(l<=r)
			{
				int mid=(l+r)>>1;

				vi new_ans=ask(mid);
				if(new_ans[0]+new_ans[1]!=mx or (new_ans[0]+new_ans[1]==mx and new_ans[1]<ans[1]))
					r=mid-1;
				else
				{
					l=mid+1;
					pos=mid;
				}
			}

			st=pos+1;
		}
	}

	sort(all(srt));

	return srt[0].sc;
}















컴파일 시 표준 에러 (stderr) 메시지

prize.cpp: In function 'int find_best(int)':
prize.cpp:54:10: warning: 'pos' may be used uninitialized in this function [-Wmaybe-uninitialized]
   54 |    st=pos+1;
      |       ~~~^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...