比赛 2026.8.28 评测结果 AAAAAAAAAA
题目名称 一周一次买下同班同学的那些事 最终得分 100
用户昵称 dream 运行时间 0.316 s
代码语言 C++ 内存使用 4.57 MiB
提交时间 2026-08-28 09:22:50
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=200005;
int n;
ll a[N],b[N];
void solve(){
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
        b[i]=abs(a[i]);
        b[i]+=b[i-1];
    }
    ll mx=0,mxn=0,sum=0;
    for(int i=n;i>=0;i--){
    	if(i==0){
    		if(sum>mx){
    			mx=sum;
    			mxn=0;
			}
		}
    	else if(a[i]>0){
    		ll tmp=sum+b[i-1]-a[i];
    		if(tmp>mx){
    			mx=tmp;
    			mxn=i;
			}
		}
		sum+=a[i];
    }
    vector<int> ans;
    int f=1;
    for(int i=mxn-1;i>=1;i--){
    	if(a[i]*f>0){
    		ans.push_back(i);
    		f=-f;
		}
	}
	if(mxn!=0) ans.push_back(mxn);
	cout<<ans.size()<<"\n";
	for(int i=0;i<ans.size();i++){
		cout<<ans[i]<<" ";
	}
	cout<<"\n";
}
int main(){
    freopen("bought.in","r",stdin);
    freopen("bought.out","w",stdout);
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int t;
    cin>>t;
    while(t--) solve();
    return 0;
}