D. Alice, Bob and Candies【1300 / 模拟】

在这里插入图片描述
https://codeforces.com/problemset/problem/1352/D

#include<bits/stdc++.h>
using namespace std;
const int N=1e5*2+10;
int t,n,a[N],s[N];
int main(void)
{
    
    
	cin>>t;
	while(t--)
	{
    
    
		cin>>n;
		for(int i=1;i<=n;i++) cin>>a[i],s[i]=s[i-1]+a[i];
		int sum1=s[1],sum2=0,lasta=s[1],lastb=0;
		int cnt=1,flag=0;
		int l=1,r=n;
		if(n==1)
		{
    
    
		    cout<<1<<" "<<s[1]<<" "<<0<<endl;
		    continue;
		}
		while(1)
		{
    
    
		    if(flag)
		    {
    
    
		        int temp=sum1;
		        int last=sum1+lastb;
		        for(int i=l+1;i<r&&sum1<=last;i++) sum1=s[i],l=i;
		        lasta=sum1-temp;
		        flag=0;
		    }else
		    {
    
    
		        int temp=sum2;
		        int last=sum2+lasta;
		        for(int i=r;i>l&&sum2<=last;i--) sum2=s[n]-s[i-1],r=i;
		        lastb=sum2-temp;
		        flag=1;
		    }
		    cnt++;
		    if(abs(l-r)==1) break;
		}
		cout<<cnt<<" "<<sum1<<" "<<sum2<<endl;
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/bettle_king/article/details/121250213