Submission #814697

#TimeUsernameProblemLanguageResultExecution timeMemory
814697Dan4LifeThe Big Prize (IOI17_prize)C++17
20 / 100
78 ms936 KiB
#include "prize.h"
#include <bits/stdc++.h>
using namespace std;
#define pb push_back
const int mxN = (int)2e5+100;
int fen[mxN];
void upd(int x, int v){for(++x; x<mxN; x+=x&-x)fen[x]+=v;}
int sum(int x){int s=0;for(++x; x>0; x-=x&-x)s+=fen[x];return s;}

int find_best(int n) {
	int pr = 0;
	for(int _ = 0; _ < 500; _++){
		int l = pr, r = n-1;
		while(l<r){
			int mid = (l+r)/2;
			auto a = ask(mid);
			if(a[0]+a[1]==0) return mid;
			if(a[0]-sum(mid-1))r=mid-1;
			else l=mid+1;
		}
		auto a = ask(l); pr = l+1;
		if(a[0]+a[1]==0) return l;
		if(a[0]!=sum(l)) upd(l,1);
	}
}

Compilation message (stderr)

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