| 比赛 |
2026.8.28 |
评测结果 |
AAAAAAAAAA |
| 题目名称 |
一周一次买下同班同学的那些事 |
最终得分 |
100 |
| 用户昵称 |
赵飞羽 |
运行时间 |
0.368 s |
| 代码语言 |
C++ |
内存使用 |
5.32 MiB |
| 提交时间 |
2026-08-28 11:34:52 |
显示代码纯文本
#include <bits/stdc++.h>
#define int long long
using namespace std;
constexpr int N = 200010;
int t, n, a[N], s[N], b[N], ans, idx, k, op[N*2];
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--) {
k = 0;
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> a[i];
s[i] = s[i-1] + a[i];
b[i] = b[i-1] + abs(a[i]);
}
ans = s[n];
idx = 1;
for (int i = 2; i <= n; i++) {
if (a[i] > 0) {
if (b[i-1] + s[n] - s[i] - a[i] > ans) {
idx = i;
ans = b[i-1] + s[n] - s[i] - a[i];
}
}
}
for (int i = 1; i <= idx - 2; i++) {
if (a[i] > 0 && a[i+1] < 0) op[++k] = i;
else if (a[i] < 0 && a[i+1] > 0) {
op[++k] = i + 1;
op[++k] = i;
a[i+1] = -a[i+1];
}
if (a[i] > 0) a[i] = -a[i];
}
if (a[idx-1] < 0) op[++k] = idx;
cout << k << "\n";
for (int i = 1; i <= k; i++) cout << op[i] << " ";
cout << "\n";
}
return 0;
}