제출 #1260703

#제출 시각아이디문제언어결과실행 시간메모리
1260703thewizardman커다란 상품 (IOI17_prize)C++20
0 / 100
1066 ms5120 KiB
#include "prize.h"
#include <bits/stdc++.h>
using namespace std;

int mx, first;
vector<int> v[200000];

bool a(int i) {
	if (v[i].empty()) v[i] = ask(i);
	return (v[i][0] + v[i][1] == mx);
}

void skibidi(int l, int r, int nl, int nr) {
	int mid = (l + r) >> 1;
	int rr = mid, ll = mid;
	bool f = a(mid);
	while (rr < r && !f) f = a(++rr);
	while (ll > l && !f) f = a(--ll);
	if (f && v[ll][0] > nl) skibidi(l, ll, nl, v[ll][1]);
	if (f && v[rr][1] > nr) skibidi(rr, r, v[rr][0], nr);
}

int find_best(int n) {
	for (int i = 0; i < min(n, 474); i++) {
		v[i] = ask(i);
		if (v[i][0] + v[i][1] > mx) first = i, mx = v[i][0] + v[i][1];
	}
	skibidi(first, n-1, first, 0);
	for (int i = 0; i < n; i++) if (v[i].size()) if (v[i][0] + v[i][1] == 0) return i;
}

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

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