Submission #285733

#TimeUsernameProblemLanguageResultExecution timeMemory
285733peijarRice Hub (IOI11_ricehub)C++17
100 / 100
24 ms3328 KiB
#include <bits/stdc++.h>
using namespace std;

#define SZ(v) ((int)(v).size())
using ll = long long;

const int MAXN = 1e5+1;

ll prefixSum[MAXN];
ll cntFields, maxCor, budget;
ll cor[MAXN];

ll getCost(int l, int r)
{
	int mid = (l+r)/2;
	ll cost = (2*mid-l-r) * cor[mid] + prefixSum[r+1] + prefixSum[l] - prefixSum[mid] - prefixSum[mid+1];
	return cost;
}

bool can(int want)
{
	for (int i(0); i + want <= cntFields; ++i)
		if (getCost(i, i+want-1) <= budget)
			return true;
	return false;
}

int besthub(int c, int m, int co[], ll b)
{
	budget = b;
	cntFields = c;
	maxCor = m;
	for (int i(0); i < cntFields; ++i)
		cor[i] = co[i];
	for (int i(0); i < cntFields; ++i)
		prefixSum[i+1] = prefixSum[i] + cor[i];

	int lo(0), up(cntFields);
	while (lo < up)
	{
		int mid = (lo+up+1)/2;
		if (can(mid)) lo = mid;
		else up = mid-1;
	}
	return lo;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...