There is a number sequence A1,A2….An,you can select a interval l,rl,r or not,all the numbers Ai(l≤i≤r) will become f(Ai).f(x)=(1890x+143)mod10007.After that,the sum of n numbers should be as much as possible.What is the maximum sum?
Input
There are multiple test cases.
First line of each case contains a single integer n.(1≤n≤105)
Next line contains n integers A1,A2….An.(0≤Ai≤104)
It’s guaranteed that ∑n≤106.
Output
For each test case,output the answer in a line.
Sample Input
2
10000 9999
5
1 9999 1 9999 1
Sample Output
19999
22033
#include<cstdio>
int a[100005];
int main(){
int n;
while (~scanf("%d",&n)){
int sum = 0;
for (int i= 0; i < n; ++i){
scanf("%d",&a[i]);
sum += a[i];
}
int ans = 0;
int tmp = 0;
int mx = 0;
for (int i = 0; i < n; ++i){
ans += (1890*a[i]+143)%10007;
tmp += a[i];
if (ans-tmp>mx) mx = ans - tmp;
if (ans - tmp < 0) {
ans = 0;
tmp = 0;
}
}
printf("%d\n",sum+mx);
}
return 0;
}
最大连续子段和 以前做过同类型的题。。