#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<set>
#include<stack>
#include<queue>
#include<algorithm>
using namespace std;
typedef long long ll;
const int maxn = 100000 + 7, INF = 0x3f3f3f3f, mod = 1e9+7;
int T, n;
int a[maxn];
int main() {
scanf("%d", &T);
int kase = 1;
while(T--) {
scanf("%d", &n);
for(int i = 1; i < n; ++i)
scanf("%d", &a[i]);
int l_ = 1, r_ = 1;
int j = 0, sum = 0, max_ = 0;
for(int i = 1; i < n; ++i) {
sum += a[i];
if(sum > max_ || (sum == max_ && (i-j) > (r_-l_))) {
max_ = sum;
r_ = i;
l_ = j;
}
else if(sum < 0){
j = i;
sum = 0;
}
}
//cout << max_ << "\n" << l_ << " == " << r_ << endl;
if(max_ == 0) {
printf("Route %d has no nice parts\n", kase++);
}
else {
printf("The nicest part of route %d is between stops %d and %d\n", kase++, l_+1, r_+1);
}
}
return 0;
}
UVA - 507 Jill Rides Again 最大子段和 O(n)
最新推荐文章于 2019-03-03 15:28:00 发布