折腾了好久才ac了。
Given a set of n integers: A={a1, a2,..., an}, we define a function d(A) as below:
Your task is to calculate d(A).
#include
int main(){
int case_num;
scanf("%d",&case_num);
while(case_num--){
int len;
scanf("%d",&len);
int a[len];
int i;
for(i=0;i<len;i++){
scanf("%d",&a[i]);
}
int dp[len];
int maxsum=-99999,lsum=a[0],rsum=a[len-1],lcur,rcur;
dp[0]=a[0];
int lc_sum=a[0];
for(lcur=1;lcur<len;lcur++){
lc_sum+=a[lcur];
if(lc_sum<a[lcur]){
lc_sum=a[lcur];
}
if(lsum<lc_sum){
lsum=lc_sum;
}
dp[lcur]=lsum;
}
int rc_sum=a[len-1];
if(maxsum<dp[len-2]+rsum){
maxsum=dp[len-2]+rsum;
}
for(rcur=len-2;rcur>0;rcur--){
rc_sum+=a[rcur];
if(rc_sum<a[rcur]){
rc_sum=a[rcur];
}
if(rsum<rc_sum){
rsum=rc_sum;
}
if(maxsum<dp[rcur-1]+rsum){
maxsum=dp[rcur-1]+rsum;
}
}
printf("%d\n",maxsum);
}
return 0;
}