t = int(input())
def solve():
n = int(input())
seq = list(map(int, input().split()))
Ascore = 0
Bscore = 0
Aprev = 0
Bprev = 0
countMoves = 0
AliceTUrn = True
while n > 0:
cur = 0
if AliceTUrn:
while cur <= Bprev and seq != []:
cur += seq.pop(0)
n -= 1
Aprev = cur
Ascore += cur
else:
while cur <= Aprev and seq != []:
cur += seq.pop(-1)
n -= 1
Bprev = cur
Bscore += cur
AliceTUrn = not AliceTUrn
countMoves += 1
print(countMoves, Ascore, Bscore)
def yes(t):
for _ in range(t):
solve()
yes(t)
#include <bits/stdc++.h>
using namespace std;
int main() {
int t;
cin>>t;
while(t--){
int n ;
cin>>n;
vector<long long > v(n);
for(int i=0;i<n;i++){
cin>>v[i];
}
int start = 0;
int last = n-1;
int moves = 0;
int pre = 0;
long long alice = 0;
long long bob = 0;
int chance = 0;
while(last >= start){
if(chance==0){
long long temp = 0;
while(start <= last && temp <= pre){
temp+=v[start++];
}
pre = temp;
alice+=temp;
chance = 1;
}
else{
long long temp2 = 0;
while(start <= last && temp2 <= pre){
temp2+=v[last--];
}
pre = temp2;
bob+=temp2;
chance = 0;
}
moves++;
}
cout<<moves<<" "<<alice<<" "<<bob<<endl;
}
}
1529A - Eshag Loves Big Arrays | 19. Remove Nth Node From End of List |
925. Long Pressed Name | 1051. Height Checker |
695. Max Area of Island | 402. Remove K Digits |
97. Interleaving String | 543. Diameter of Binary Tree |
124. Binary Tree Maximum Path Sum | 1465. Maximum Area of a Piece of Cake After Horizontal and Vertical Cuts |
501A - Contest | 160A- Twins |
752. Open the Lock | 1535A - Fair Playoff |
1538F - Interesting Function | 1920. Build Array from Permutation |
494. Target Sum | 797. All Paths From Source to Target |
1547B - Alphabetical Strings | 1550A - Find The Array |
118B - Present from Lena | 27A - Next Test |
785. Is Graph Bipartite | 90. Subsets II |
1560A - Dislike of Threes | 36. Valid Sudoku |
557. Reverse Words in a String III | 566. Reshape the Matrix |
167. Two Sum II - Input array is sorted | 387. First Unique Character in a String |