比赛 2026.8.26 评测结果 TTTTTTTTTT
题目名称 game 最终得分 0
用户昵称 wmlsxzh 运行时间 21.008 s
代码语言 C++ 内存使用 11.03 MiB
提交时间 2026-08-26 11:20:46
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
#define MAXN 500005
#define int long long
int t,n;
int as=0,bs=0;
struct node{
    int v;
    node* nxt;
};
node* head = new node;
node* tail = head;
void print(){
    node* cur = head;
    while(cur!=nullptr){
        printf("%lld ",cur->v);
        cur=cur->nxt;
    }
    printf("\n");
}
void alice(){
    node* cur = head;
    if((cur->nxt)->nxt==nullptr){
        cur->v = cur->v + (cur->nxt)->v;
        cur->nxt = (cur->nxt)->nxt;
        tail = cur;
        return;
    }
    cur = cur->nxt;
    int idx=1,fstidx,big=-1;
    while((cur->nxt)->nxt!=nullptr){
        node* cp = cur->nxt;
        int x = cur->v,y = cp->v;
        if(x+y>big){
            big = x+y;
            fstidx = idx;
        }
        cur=cur->nxt;
        idx++;
    }
    cur = head->nxt;
    idx=1;
    while(idx<fstidx){
        cur=cur->nxt;
    }
    cur->v = big;
    cur->nxt = (cur->nxt)->nxt;
}
void bob(){
    int hv = head->v,tv = tail->v;
    if(hv>tv){
        bs += head->v;
        head = head->nxt;
    }
    else{
        bs += tail->v;
        node* cur = head;
        while(cur->nxt!=tail){
            cur=cur->nxt;
        }
        tail = cur;
        delete cur->nxt;
        cur->nxt = nullptr;
    }
}
signed main(){
    freopen("gameemag.in","r",stdin);
    freopen("gameemag.out","w",stdout);
    scanf("%lld",&t);
    while(t--){
        as=0;bs=0;
        scanf("%lld",&n);
        scanf("%lld ",&(head->v));
        head->nxt = nullptr;
        node* lst = head;
        for(int i=1;i<n;++i){
            node* cur = new node;
            tail = cur;
            scanf("%lld ",&(cur->v));
            cur->nxt = nullptr;
            lst->nxt = cur;
            lst = cur;
        }
        while(head->nxt!=nullptr){
            alice();
            if(head->nxt==nullptr){
                as = head->v;
                break;
            }
            bob();
        }
        printf("%lld %lld\n",as,bs);
    }
    return 0;
}