Submission #1224812

#TimeUsernameProblemLanguageResultExecution timeMemory
1224812walizamaneeThe Big Prize (IOI17_prize)C++20
20 / 100
23 ms408 KiB
#include<bits/stdc++.h>
#include "prize.h"
using namespace std;

int  ans , ek , dui , boro , aag , por , hereone , heretwo;
vector<int> chek;

void getans( int aage , int pore , int bam , int dan ) {
		if( ans == -1 ) {
		int mid = ( bam + dan ) / 2;
		for( int z = mid; z > bam; z-- ) {
			chek = ask(z);
			if( chek[0] + chek[1] == 0 ) ans = z;
			else if( chek[0] + chek[1] == boro ) {
				if( chek[0] > aage ) {
					cerr << aage << " " << chek[0] << " " << bam << " " << z << "\n";
					getans( aage , chek[0] , bam , z );
				}
				z = -10;
			}
		}
		for( int z = mid + 1; z < dan; z++ ) {
			chek = ask(z);
			if( chek[0] + chek[1] == 0 ) ans = z;
			else if( chek[0] + chek[1] == boro ) {
				if( chek[0] < pore ) {
					cerr << chek[0] << " " << pore << " " << z << " " << dan << "\n";
					getans( chek[0] , pore , z , dan );
				}
				z = dan + 1;
			}
		}
	}
}
int find_best(int n) {
	ans = -1;
	boro = 0;

	for( int z = n - 1; z >= max(0 , n - 450 ); z-- ) {
		//cerr << z << "\n";
		chek = ask(z);
		if( chek[0] + chek[1] == 0 ) ans = z;
		else if( chek[0] + chek[1] > boro )   {
			   por = chek[0];
			   heretwo = z;
			   boro = chek[0] + chek[1];
		}
	}
	//cerr <<  por << " " <<  heretwo << "\n";
	if( n > 1 ) getans( 0 , por , -1 , heretwo );
	//cerr << "lmao" << "\n";
	return ans;

}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...