17暑假练习赛2 Codeforces Round #498 (Div. 3) 1006C
题意:n个数,相对顺序不能变,把他分为3个区域,每个区域和分别为sum1,sum2,sum3,区域可以为空,
条件:需要sum1==sum3。问你最大的sum1和sum3是多少?
题解:因为分数字的时候相对位置不能变,所以直接两边往中间靠近外加特判就可以了。
#include<stdio.h>
int main()
{
int n;
long long number[200010];
scanf("%d",&n);
for (int i=0;i<n;i++)
{
scanf("%lld",&number[i]);
}
long long sum1=0;long long sum3=0;long long max=0;
int l=0,r=n-1;
while(l<=r)
{
if(sum1<sum3)
{
sum1+=number[l];
l++;
}
if(sum1>sum3)
{
sum3+=number[r];
r--;
}
if(sum1==sum3)
{
if(sum1>max)
max=sum1;
sum1+=number[l];
l++;
}
}
printf("%lld\n",max);
}