题目:
#include<stdio.h>
int Count=0;
int Start(int a[],int left,int right){
int sum = 0;
Count++;
if(left==right){
if(a[left]>=0)
sum=a[left];
else sum=0;
}
else{
int mid = (left+right)/2;
int leftSum = Start(a,left,mid);
int rightSum = Start(a,mid+1,right);
int s1,s2,s3;
s1=s3=0;
for(int i=mid;i>=left;i--){
s3+=a[i];
if(s3>s1) s1=s3;
}
s2=s3=0;
for(int i=mid+1;i<=right;i++){
s3+=a[i];
if(s3>s2) s2=s3;
}
sum = s1+s2;
if(sum<leftSum)
sum = leftSum;
if(sum<rightSum)
sum = rightSum;
}
return sum;
}
int main(){
int maxx,n;
int a[50000];
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&a[i]);
maxx = Start(a,0,n-1);
printf("%d %d",maxx,Count);
return 0;
}