给你n个整数a1,a2,a3……,an,对于1<=i<=j<=n(1<=n<=100000);求ai+ai+1+ai+2+……aj的最大值。如果给定的n个整数都为负数,那么规定最大值为零。
要求用分治法求解
Input
输入为两行,第一行为整数n,第二行为n个整数。
Output
输出也有两行,第一行为i和j;第二行为最大的子段和的值,格式参见Sample Output。
Sample Input
6
2 -5 11 -4 13 -2
Sample Output
From=3,To=5
MaxSum=20
#include<bits/stdc++.h>
using namespace std;
const int MAXN=100005;
int n;
long long a[MAXN],sum,ansum;
pair<int,int>ans;
const long long inf=(1LL)<<61;
void div_algorithm(int l,int r)
{
if(l>r)return;
int mid