제출 #418353

#제출 시각아이디문제언어결과실행 시간메모리
418353Azimjon쌀 창고 (IOI11_ricehub)C++17
68 / 100
15 ms1100 KiB
#include "ricehub.h"
#include <bits/stdc++.h>

using namespace std;

int besthub(int R, int L, int X[], long long B) {
	auto cost = [&](int x, int y) { return abs(X[x] - X[y]); };

	int ans = 1;
	int pb = 0;
	int l, r;
	l = r = 0;

	for (; l + 1 < R;) {
		while (r + 1 < R) {
			int lm = (l + r) / 2;
			int cm = (l + r + 1) / 2;
			int cb = pb;

			if (lm != cm) {
				cb += (lm - l + 1) * cost(cm, lm);
				cb -= (r - cm + 1) * cost(cm, lm);
			}

			cb += cost(cm, r + 1);
			// cerr << l << " " << r + 1 << " " << cb << " " << endl;
			if (cb > B)
				break;
			pb = cb;

			r++;
		}

		ans = max(ans, r - l + 1);

		// l++;
		int lm = (l + r) / 2;
		int cm = (l + r + 1) / 2;

		if (lm != cm) {
			pb += (lm - l + 1) * cost(cm, lm);
			pb -= (r - cm + 1) * cost(cm, lm);
		}
		pb -= cost(cm, l);
		l++;
		r = max(r, l);
		// cerr << "-----" << l << " " << r << " " << pb << " " << endl;
	}

	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...