제출 #574551

#제출 시각아이디문제언어결과실행 시간메모리
574551valerikkThe Big Prize (IOI17_prize)C++17
0 / 100
82 ms11192 KiB
#include "prize.h"
#include <bits/stdc++.h>
 
using namespace std;
 
mt19937 rnd(239);
 
namespace {
 
int mx_cnt;
 
}
 
vector<vector<int>> mem;
 
vector<int> mask(int i) {
	return mem[i] == vector<int>{-1, -1} ? mem[i] = ask(i) : mem[i];
}
 
int solve(int l, int r) {
	if (l > r) 
		return -1;
 
	if (l == r) {
		auto a = mask(l);
		if (a[0] + a[1] == 0)
			return l;
		return -1;
	}
 
	auto al = mask(l);
	auto ar = mask(r);
 
	if (al[0] + al[1] == 0)
		return l;
	if (ar[0] + ar[1] == 0)
		return r;
 
	if (al[0] + al[1] == ar[0] + ar[1] == mx_cnt && al[0] == ar[0]) 
		return -1;
 
	int m = (l + r) / 2;
 
	int res = solve(l, m);
	if (res == -1)
		res = solve(m + 1, r);
	return res;
}	
 
int find_best(int n) {
	mem.resize(n, vector<int>{-1, -1});
	return solve(0, n - 1);
}

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

prize.cpp: In function 'int solve(int, int)':
prize.cpp:39:20: warning: suggest parentheses around comparison in operand of '==' [-Wparentheses]
   39 |  if (al[0] + al[1] == ar[0] + ar[1] == mx_cnt && al[0] == ar[0])
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...