#include <stdlib.h>
#include <string.h>
#include "oj.h"
/*
功能:
输入:pIntArray:数组,nCout:数组长度
输出:
返回:返回最大值
*/
int GetMaxSum(int *Array,int left,int right)
{
if(right-left==1) return Array[left];
int mid=left+(right-left)/2;
int leftMaxSum=GetMaxSum(Array,left,mid);
int rightMaxSum=GetMaxSum(Array,mid,right);
int max=leftMaxSum>rightMaxSum?leftMaxSum:rightMaxSum;
int leftCurrSum=Array[mid-1],rightCurrSum=Array[mid],curSum=0;
for(int i=mid-1;i>=left;i--)
{
curSum+=Array[i];
if(curSum>leftCurrSum)
leftCurrSum=curSum;
}
curSum=0;
for(int i=mid;i<right;i++)
{
curSum+=Array[i];
if(curSum>rightCurrSum)
rightCurrSum=curSum;
}
return max>(leftCurrSum+rightCurrSum)?max:leftCurrSum+rightCurrSum;
}
int GetSubArraySum(int* pIntArray, int nCount)
{
/*在这里实现功能*/
int answer=GetMaxSum(pIntArray,0,nCount);
return answer;
}