Submission #123619

#TimeUsernameProblemLanguageResultExecution timeMemory
123619Sorting커다란 상품 (IOI17_prize)C++14
97.41 / 100
63 ms504 KiB
#include <bits/stdc++.h>

using namespace std;

vector<int> ask(int i);

int mx = 0, idx = 0;

int solve(int l, int r, int cntl, int cntr){
	if(l > r || cntl == cntr){
		return -1;
	}

	int mid = (l + r) >> 1;

	vector<int> a = ask(mid);
	int curr = a[0] + a[1];

	if(curr == 0){
		return mid;
	}
	if(curr < mx){
		int i;

		for(i = mid - 1; i >= l; i--){
			a = ask(i);
			curr = a[0] + a[1];

			if(curr == 0){
				return i;
			}

			if(curr == mx){
				int rval = solve(mid + 1, r, a[0] + (mid - i), cntr);

				if(rval != -1){
					return rval;
				}
				return solve(l, i, cntl, a[0]);
			}
		}

		return solve(mid + 1, r, cntl + (mid - i), cntr);
	}

	int rval = solve(mid + 1, r, a[0], cntr);

	if(rval != -1){
		return rval;
	}
	return solve(l, mid - 1, cntl, a[0]);
}

int find_best(int n){
	int l = 0, r = n - 1;
	int pr = n;

	for(int i = 0; i < min(n, 500); i++){
		vector<int> a = ask(i);
		int curr = a[0] + a[1];

		if(curr > mx){
			mx = curr;
			idx = i;
		}
	}

	return solve(0, n - 1, 0, mx);
}

Compilation message (stderr)

prize.cpp: In function 'int find_best(int)':
prize.cpp:55:6: warning: unused variable 'l' [-Wunused-variable]
  int l = 0, r = n - 1;
      ^
prize.cpp:55:13: warning: unused variable 'r' [-Wunused-variable]
  int l = 0, r = n - 1;
             ^
prize.cpp:56:6: warning: unused variable 'pr' [-Wunused-variable]
  int pr = n;
      ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...