| 记录编号 |
618262 |
评测结果 |
RRRRRRRRRR |
| 题目名称 |
1.加法问题 |
最终得分 |
0 |
| 用户昵称 |
ChenBp |
是否通过 |
未通过 |
| 代码语言 |
C++ |
运行时间 |
11.009 s |
| 提交时间 |
2026-08-28 11:55:16 |
内存使用 |
3.87 MiB |
显示代码纯文本
#include <iostream>
#include <cstdio>
#include <vector>
using namespace std;
using ll=long long;
const int N=2e5+5;
int a[N],b[N];
ll hs[N];
vector<int>ans;
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--){
ans.clear();
int n;
cin>>n;
for(int i=1;i<=n;i++) {
cin>>a[i];
}
b[n]=1e9+9;
hs[n+1]=0;
for(int i=n;i>=1;i--){
if(a[i]>0) b[i-1]=min(a[i],b[i]);
hs[i]=hs[i+1]+a[i];
}
ll mx=0,id=0;
int p=a[1]>0?1:0;
ll f=0,sp=0;
for(int i=1;i<=n;i++){
if(a[i]>0){
ll z=a[i];
if(p!=i&&(b[i]<a[i]||f>z)){
if(p!=0) ans.push_back(p);
ans.push_back(i);
f=a[i];
a[i]*=-1;
for(int j=p+1;j<=i-1;j++) sp+=-a[j];
p=i-1;
ll sum=sp;
sum+=-f+hs[i+1];
if(sum>mx){
mx=sum;
id=ans.size();
}
}
}else{
f+=-a[i];
}
}
cout<<id<<"\n";
for(int i=0;i<id;i++) cout<<ans[i]<<" ";
cout<<"\n";
}
}