比赛 板子大赛 评测结果 AWAAAAAAAA
题目名称 单子序列最大和 最终得分 90
用户昵称 zhm 运行时间 0.055 s
代码语言 C++ 内存使用 1.70 MiB
提交时间 2025-01-22 17:10:05
显示代码纯文本
#include <cstdio>
#include <algorithm>

const int N = 1e6;

int s[N+5], smin[N+5];

int main(void)
{
	freopen("subq.in", "r", stdin);
	freopen("subq.out", "w", stdout);
	int n;
	scanf("%d", &n);
	
	for (int i = 1; i <= n; i++) {
		scanf("%d", &s[i]);
		s[i] += s[i - 1];
	}
	
	smin[1] = 0;
	for (int i = 2; i <= n; i++) {
		if (s[smin[i - 1]] > s[i - 1]) smin[i] = i - 1;
		else smin[i] = smin[i - 1];
	}
	int ans = 0, l, r;
	for (int i = 1; i <= n; i++) {
		if (ans < s[i] - s[smin[i]]) {
			ans = s[i] - s[smin[i]];
			l = smin[i] + 1;
			r = i;
		} else if (ans == s[i] - s[smin[i]] && smin[i] < l)
			l = smin[i], r = i;
	}
	printf("%d\n%d\n%d\n", l, r, ans);
	
	fclose(stdin);
	fclose(stdout);
	return 0;
}