题目链接:https://codeforces.com/problemset/problem/1352/D
题目:两个人轮流吃一组糖果,分成 n堆,每堆对应 有a[i]个 (0<=i<n),两人每次吃的糖果都要严格大于上一个人吃的数量,例如 上一次A吃了x个,那么B这次就要至少吃 x + 1个,而且每个人每次至少吃一堆(就是必须至少吃掉当前a[i]个),输出需要轮流的次数,A和B各自总共吃了多少个糖果
思路:简单的双指针问题,简单的暴力法
for _ in range(int(input())):
n = int(input())
a = [*map(int, input().split())]
ans,x, y= 0,0,0
l, r, f,tmp,num= 0, n-1, 0, 1, 0
while l <= r:
if not f:
if tmp <= a[l]:
tmp = a[l] + 1
x += a[l]
l += 1
else:
cur = 0
while l <= r and tmp > cur:
cur += a[l]
x += a[l]
l += 1
tmp = cur + 1
f = 1
else:
if tmp <= a[r]:
tmp = a[r] + 1
y += a[r]
r -= 1
else:
cur = 0
while r >= l and tmp > cur:
cur += a[r]
y += a[r]
r -= 1
tmp = cur + 1
f = 0
num += 1
print(num, x, y)