比赛 2026.8.28 评测结果 AAAAATTTTT
题目名称 一周一次买下同班同学的那些事 最终得分 50
用户昵称 yanglich 运行时间 10.568 s
代码语言 C++ 内存使用 5.99 MiB
提交时间 2026-08-28 12:20:58
显示代码纯文本
#include<bits/stdc++.h>
#define int long long
using namespace std;
int T,n,a[200005],ans;
vector<int>p,q;
int sum1[200005],sum2[200005];
void solve(){
    cin>>n;
    ans=0;
    int cn1=0,cn2=0;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        sum1[i]=sum1[i-1]+a[i];
        sum2[i]=sum2[i-1]+abs(a[i]);
        if(a[i]>0)cn1++;
        else cn2++;
    }
    if(cn1==n||cn2==n){
        cout<<"0\n\n";
        return;
    }
    p.clear(),q.clear();
    for(int i=1;i<=n;i++){
        if(a[i]<0)continue;
        q.push_back(i);
        if(sum2[i-1]+sum1[n]-sum1[i]-a[i]>ans){
            ans=sum2[i-1]+sum1[n]-sum1[i]-a[i];
            p=q;
        } 
        if(i-1!=0)
            q.push_back(i-1);
    } 
    cout<<p.size()<<"\n";
    for(int i=0;i<p.size();i++)
        cout<<p[i]<<" ";
    cout<<"\n";
    //cout<<ans<<"\n";
}
signed main(){
    ios::sync_with_stdio(0);
    cin.tie(0),cout.tie(0);
    freopen("bought.in","r",stdin);
    freopen("bought.out","w",stdout);
    cin>>T;
    while(T--){
        solve();
    }
    return 0;
}