제출 #597310

#제출 시각아이디문제언어결과실행 시간메모리
597310Soumya1커다란 상품 (IOI17_prize)C++17
96.37 / 100
61 ms5212 KiB
#include "prize.h"
#include <bits/stdc++.h>
using namespace std;
const int S = 480;
vector<vector<int>> a;
int ans, mx;
vector<int> query(int i) {
	if (a[i].size()) return a[i];
	return a[i] = ask(i);
}
void solve(int l, int r, int pref, int suf) {
	if (l > r) return;
	if (pref + suf == mx) return; 
	int m = (l + r) >> 1;
	while (m >= l) {
		auto g = query(m);
		if (g[0] + g[1] == 0) {
			ans = m;
			return;
		}
		if (g[0] + g[1] == mx) {
			int tot = g[0] - pref;
			solve(l, m - 1, pref, g[1]);
			break;
		}
		m--;
	}
	if (ans) return;
	if (m <= l) {
		solve((l + r) / 2 + 1, r, query((l + r) / 2)[0], suf);
		if (ans) return;
	} else {
		solve(m + 1, r, query(m)[0], suf);
	}
}
int find_best(int n) {
	a.resize(n);
	int who = 0;
	for (int i = 0; i < S; i++) {
		auto g = query(i);
		if (mx < g[0] + g[1]) {
			mx = g[0] + g[1];
			who = i;
		}
		if (g[0] + g[1] == 0) {
			return i;
		}
	}
	solve(who + 1, n - 1, query(who)[0], query(n - 1)[1]);
	return ans;
}

컴파일 시 표준 에러 (stderr) 메시지

prize.cpp: In function 'void solve(int, int, int, int)':
prize.cpp:22:8: warning: unused variable 'tot' [-Wunused-variable]
   22 |    int tot = g[0] - pref;
      |        ^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...