Submission #1350050

#TimeUsernameProblemLanguageResultExecution timeMemory
1350050JohanRice Hub (IOI11_ricehub)C++20
68 / 100
5 ms1456 KiB
#include "ricehub.h"
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 5;
int a[N], pr[N];
int ask(int l, int r){
	if(l > r)
		return 0;
	return pr[r] - pr[l - 1];
}
bool ok(int x, int y, int n){
	for(int i = 1; i + x - 1 <= n; i++){
		int l = i, r = i + x - 1;
		int mid = (l + r) >> 1;
		int L = max(0, mid - l + 1) * a[mid] - ask(l, mid);
		int R = ask(mid, r) - max(0, r - mid + 1) * a[mid];
		if(L + R <= y)
			return true;
	}
	return false;
}
int besthub(int n, int x, int aa[], long long b){
	for(int i = 0; i < n; i++)
		a[i + 1] = aa[i];
	for(int i = 1; i <= n; i++)
		pr[i] = pr[i - 1] + a[i];
	int l = 0, r = n;
	int best = -1;
	while(r >= l){
		int mid = (l + r) >> 1;
		if(ok(mid, b, n) == true){
			best = mid;
			l = mid + 1;
		}
		else r = mid - 1;
	}
	return best;
}
/*
5 20 6
1 2 10 12 14
*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...