标签:mat include pac inline 现在 problem for 两个指针 题意
#include <bits/stdc++.h>
using namespace std;
#define ll long long
ll ar[10010];
int main()
{
ll n , m ;
cin >>n;
while(n--){
cin >>m;
for(int i=1;i<=m;i++)cin >>ar[i];
ll a= ar[1], b=0;//a 是Alice吃的糖果总数, b是Bob吃的糖果总数
ll aa = a, bb =0;//aa 是Alice吃一次的数量, b是Bob吃一次的数量
ll num =0 ;//num是这个活动进行的总次数
ll l =2, r =m;//因为第一个Alice已经吃了, 所以从第二个开始
int flag =0;//判断现在是谁的回合
while(l<=r){
if(aa<=bb&&!flag){//Alice回合时候Alice目前吃的糖果少于上一次Bob吃的数量
aa +=ar[l];
a+=ar[l++];
}
else if(bb<=aa&&flag){//同理
bb +=ar[r];
b+=ar[r--];
}
if(aa>bb&&!flag){//Alice当前已经符合题目上说的条件可以轮到Bob
num ++ ;flag =1 ;
bb =0 ;
}
else if(bb>aa&&flag)
{//同理
num ++ ;
flag=0 ;
aa=0 ;
}
}
if(aa!=0 && bb!=0){//临界点判断
num++;
}
if(m==1){//只有一个糖果的情况
num++;
}
cout<< num <<" "<<a<<" "<<b<<endl;
}
return 0;
}
标签:mat include pac inline 现在 problem for 两个指针 题意
原文地址:https://www.cnblogs.com/QFNU-ACM/p/12862736.html