Submission #410082

# Submission time Handle Problem Language Result Execution time Memory
410082 2021-05-22T00:49:20 Z dreezy The Big Prize (IOI17_prize) C++17
20 / 100
1 ms 288 KB
#include "prize.h"
#include <bits/stdc++.h>
using namespace std;

/*********************************************************************************************************************/

int find_best(int n) {
	
	int curtotal = -1;
	for(int i =0; i<10; i++){
		vector<int> res= ask(n/10 *i);
		if( !res[0] && !res[1]) return n/10 *i;
		curtotal = max(curtotal,res[0] +res[1]);
	}

	
	int left = 0, right = n-1;
	int target =1;
	vector<bool> vis(n);
	int cnt =0;
	while(true){
		int ind = (left +right) /2 ;
		//cout << left <<", "<<ind<<", "<<right<<": "<<target<<" "<<curtotal<<endl;

		vector<int> res = ask(ind);
		
		if(res[0] + res[1] == 0)
			return ind;
		if(res[0] + res[1] < curtotal){
			int numvis = 1;
			res = ask(--ind);
			while(res[0]+ res[1] < curtotal){
				if(res[0] + res[1] == 0)
					return ind;
				
				numvis++;
				--ind;
				//cout <<ind<<":"<<endl;
				if(ind <0){
					target += numvis;
					break;
				}
				if(vis[ind])
				{
					target+= numvis;
					break;
				}
				
				res = ask(ind);
					
				
			}
			
			if(res[0] + res[1] == curtotal){
				target += res[0]+ numvis +1;
				left = ind+1;
				right = n-1;
			}
			
			
		}
		
		if(res[0] < target){
			left = ind +1;
		}
		else{
			right = ind - 1;
		}
		cnt++;
		if(cnt >=20) break;
	}
	
	return 0;
}


/*********************************************************************************************************************/
# Verdict Execution time Memory Grader output
1 Correct 1 ms 200 KB Output is correct
2 Correct 1 ms 200 KB Output is correct
3 Correct 1 ms 276 KB Output is correct
4 Correct 1 ms 280 KB Output is correct
5 Correct 1 ms 284 KB Output is correct
6 Correct 1 ms 200 KB Output is correct
7 Correct 1 ms 288 KB Output is correct
8 Correct 1 ms 200 KB Output is correct
9 Correct 1 ms 276 KB Output is correct
10 Correct 1 ms 200 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 288 KB Output is correct
2 Correct 1 ms 284 KB Output is correct
3 Correct 1 ms 276 KB Output is correct
4 Correct 1 ms 284 KB Output is correct
5 Correct 1 ms 200 KB Output is correct
6 Correct 1 ms 284 KB Output is correct
7 Correct 1 ms 280 KB Output is correct
8 Correct 1 ms 280 KB Output is correct
9 Correct 1 ms 200 KB Output is correct
10 Correct 1 ms 200 KB Output is correct
11 Incorrect 1 ms 200 KB answer is not correct
12 Halted 0 ms 0 KB -