Submission #1000405

#TimeUsernameProblemLanguageResultExecution timeMemory
1000405vjudge1The Big Prize (IOI17_prize)C++17
100 / 100
30 ms5684 KiB
#include"prize.h"
using namespace std;
int tot,now;vector<int>a[200009],b;
inline int sum(int i)
{
	if(a[i].empty())a[i]=ask(i);
	return a[i][0]+a[i][1];
}
inline int lft(int i)
{
	if(a[i].empty())a[i]=ask(i);
	return a[i][0];
}
inline int dfs(int l,int r)
{
	if(l>r)return-1;
	if(!sum(r))return r;
	if(sum(r)^tot)
	{
		int x=dfs(l,r-1);
		if(x>>31)++now;
		return x;
	}
	if(lft(r)==now)return-1;
	int mid=l+r>>1,x=dfs(l,mid);
	if(x>>31)x=dfs(mid+1,r);
	return x;
}
int find_best(int n)
{
	b.emplace_back(-1);
	for(int i=0;i<n&&i<500;++i)b.emplace_back(b.back()+
		(n-1-b.back()-1)/(500-i)+1);
	for(int i=1;i<b.size();++i)if(!sum(b[i]))return b[i];
	for(int i=1;i<b.size();++i)if(sum(b[i])>tot)tot=sum(b[i]);
	for(int i=1;i<b.size();++i)
	{
		int x=dfs(b[i-1]+1,b[i]);
		if(~x)return x;
	}
}

Compilation message (stderr)

prize.cpp: In function 'int dfs(int, int)':
prize.cpp:25:11: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
   25 |  int mid=l+r>>1,x=dfs(l,mid);
      |          ~^~
prize.cpp: In function 'int find_best(int)':
prize.cpp:34:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   34 |  for(int i=1;i<b.size();++i)if(!sum(b[i]))return b[i];
      |              ~^~~~~~~~~
prize.cpp:35:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   35 |  for(int i=1;i<b.size();++i)if(sum(b[i])>tot)tot=sum(b[i]);
      |              ~^~~~~~~~~
prize.cpp:36:15: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   36 |  for(int i=1;i<b.size();++i)
      |              ~^~~~~~~~~
prize.cpp:41:1: warning: control reaches end of non-void function [-Wreturn-type]
   41 | }
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...