Submission #294922

#TimeUsernameProblemLanguageResultExecution timeMemory
294922VodkaInTheJarThe Big Prize (IOI17_prize)C++14
90 / 100
97 ms384 KiB
#include <bits/stdc++.h>
#include "prize.h"
 
using namespace std;
mt19937 random_generator(chrono::steady_clock::now().time_since_epoch().count());
 
const int maxn = 2e5 + 3; 
 
/*
int m; 
int a[maxn];
vector <int> ask(int x)
{
	vector <int> ans;
	ans.resize(2);
	ans[0] = ans[1] = 0; 
	
	for (int i = 0; i < x; i++)
	if (a[i] < a[x])
	ans[0]++;
	
	for (int i = x + 1; i < m; i++)
	if (a[i] < a[x])
	ans[1]++;
	
	return ans;
}
*/
 
int max_sum; 
int find_best(int n)
{
	for (int i = 0; i < min(n, 500); i++)
	{
		auto curr = ask(i);
		max_sum = max(max_sum, curr[0] + curr[1]);
	}
	
	for (int i = 0; i < n; )
	{
		auto curr = ask(i);
		if (curr[0] + curr[1] == 0)
		return i; 
		
		if (curr[0] + curr[1] != max_sum)
		{
			i++;
			continue;
		}
		
		int low = i+1, high = min(low + 500, n-1); 
		while (low < high)
		{
			int mid = (low + high) / 2;
			auto temp = ask(mid);
			
			if (temp[0] != curr[0] || temp[1] != curr[1])
			high = mid;
			
			else 
			low = mid + 1; 
		}
		
		i = low; 
	}
}
 
/*
int main()
{
	cin >> m;
	for (int i = 0; i < m; i++)
	cin >> a[i];
	
	cout << find_best(m) << endl; 
}
*/

Compilation message (stderr)

prize.cpp: In function 'int find_best(int)':
prize.cpp:66:1: warning: control reaches end of non-void function [-Wreturn-type]
   66 | }
      | ^
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...