Submission #1297487

#TimeUsernameProblemLanguageResultExecution timeMemory
1297487muhammad-ahmadRice Hub (IOI11_ricehub)C++20
42 / 100
1 ms628 KiB
#include <bits/stdc++.h>
#include "ricehub.h"
using namespace std;

const int N = 1e5 + 5;

int pref[N];
vector<int> x;

int cost(int l, int r){
	int idx = (l + r) / 2, centre = x[(l + r) / 2];
	
	int sub = pref[idx], add = pref[r] - pref[idx];
	
	if (l != 0) sub -= pref[l - 1];
	
	return ((idx - l + 1) * centre - sub + add - (r - idx) * centre);
}


int besthub(int R, int L, int X[], long long B)
{
	int l = 0, r = R + 1, s = 0;
	for (int i = 0; i < R; i++){
		x.push_back(X[i]);
		s += X[i];
		pref[i] = s;
	}
	pref[R] = pref[R - 1];
	while (r - l > 1){
		int m = (l + r) / 2;
		int ans = 1e9;
		for (int i = m - 1; i < R; i++){
			ans = min(ans, cost(i - m + 1, i));
		}
		
		if (ans <= B) l = m;
		else r = m;
	}	
	return l;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...