http://acm.nyist.net/JudgeOnline/problem.php?pid=873
环之最大和
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
1
-
描述
-
int型范围内,将m(m<1000)个数围成一个圈,给定一个数n(n<=m),求连续的n个数使得和最大。输出最大和及始末位置。
-
输入
- 多组测试数据,每组数据首行是两个数m,n,表示m个数,求n个连续最大和。 输出
- 输出三个数:sum,b,e,分别表示最大和,开始位置,结束位置。 样例输入
-
5 3 4 2 3 1 5 4 2 2 3 4 5
样例输出
-
11 5 2 9 3 4
提示
-
最大和相等且位置不唯一,则输出b较小的位置,如:
5 2
4 3 2 4 5
输出:9 4 5
#include<iostream>
using namespace std;
int a[1005];
int main() {
int m, n;
while (cin >> m >> n) {
long long sum = 0, max = 0, h = 1;
int b, e;
for (int i = 0; i < m; i++) {
cin >> a[i];
}
for (int i = 0; i < m; i++) {
for (int j = i; j < i + n; j++) {
sum += a[j % m];
}
if (sum > max) {
max = sum;
b = i + 1;
e = (i + n - 1) % m + 1;
}
sum = 0;
}
cout << max << " " << b << " " << e << endl;
}
}