| 比赛 | 
    板子大赛 | 
    评测结果 | 
    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;
}