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