Submission #800256

#TimeUsernameProblemLanguageResultExecution timeMemory
800256vjudge1Bigger segments (IZhO19_segments)C++17
0 / 100
1 ms212 KiB
#include <bits/stdc++.h>
using namespace std;

const int maxn = 5e5+3;
int n;
int a[maxn];
long long p[maxn];
int ans;

int main(){
	ios_base::sync_with_stdio(0); cin.tie(0);
	cin >> n;
	for (int i=0; i<n; i++) cin >> a[i];

	p[0] = 0;
	for (int i=1; i<=n; i++) p[i] = p[i-1] + a[i-1];

	int l1 = 1, r1 = n;
	while (l1 <= r1) {
		int m1 = (l1+r1)/2;

		int cnt = 1, cur = n;
		for (int i=n-1; i>0 && cnt<m1; i--) {
			if (p[i] * (m1-cnt+1) <= p[cur] * (m1-cnt)) {
				cur = i;
				cnt++;
			}
		}

		if (cnt == m1) {
			ans = m1;
			l1 = m1 + 1;
		} else {
			r1 = m1 - 1;
		}
	}

	cout << ans << '\n';
	return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...