Submission #1328361

#TimeUsernameProblemLanguageResultExecution timeMemory
1328361vache_kocharyan쌀 창고 (IOI11_ricehub)C++20
100 / 100
14 ms2360 KiB
#include "ricehub.h"
#include <algorithm>

const int N = 1e5 + 5;
long long pref[N];
long long X[N];
int n;

long long f(int l, int r)
{
	int mid = (l + r) / 2;
	return (1ll * X[mid] * (mid - l + 1) - (pref[mid] - pref[l - 1]) + 
			(pref[r] - pref[mid]) - 1ll * X[mid] * (r - mid));
}

int besthub(int R, int L, int X[], long long B)
{
	n = R;
	for (int i = 0; i < R; i++)
		::X[i + 1] = X[i];

	pref[0] = 0;
	for (int i = 1; i <= R; i++)
	{
		pref[i] = pref[i - 1] + ::X[i];
	}
	int answer = 1;

	for (int i = 1; i <= n; i++)
	{
		int l = 1, r = i, ans = 1;
		while (l <= r)
		{
			int mid = (l + r) / 2;
			if (f(mid, i) <= B)
			{
				ans = (i - mid + 1);
				r = mid - 1;
			}
			else
			{
				l = mid + 1;
			}
		}
		answer = std::max(answer, ans);
	}
	return answer;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...