比赛 |
2025.9.13 |
评测结果 |
AWWWWWWWWWEWWWWWWA |
题目名称 |
The Best Lineup |
最终得分 |
11 |
用户昵称 |
彭欣越 |
运行时间 |
3.361 s |
代码语言 |
C++ |
内存使用 |
43.34 MiB |
提交时间 |
2025-09-13 09:45:25 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1000010;
int T,n,mx,cx,ci,a[N],t[N],tb[N],s[N],mk[N];
vector<int>v[N];
int main () {
freopen("Lineup.in","r",stdin);
freopen("Lineup.out","w",stdout);
ios::sync_with_stdio(0);
cin.tie(0),cout.tie(0);
cin >> T;
while (T--) {
int flag=0;
mx=0;
memset(mk,0,sizeof(mk));
memset(t,0,sizeof(t));
memset(s,0,sizeof(s));
cin >> n;
for (int i=1;i<=n;i++) {
cin >> a[i];
mx=max(mx,a[i]);
t[a[i]]++,tb[a[i]]++;
//mp[a[i]]=i;
v[a[i]].push_back(i);
}
for (int i=n-1;i>0;i--) s[i]+=s[i+1]+t[i+1];
cx=mx-1;
while (t[cx]==0&&cx>0) cx--;
ci=v[cx][tb[cx]-t[cx]];
for (int i=1;i<=n;i++) {
//cout << mx <<endl;
if (mk[i]) {
//cout << 1 <<endl;
continue;
}
if (flag&&a[i]<mx||a[i]<cx) {
t[a[i]]--;
continue;
}
if (s[a[i]]==0||mx==a[i]||flag) {
cout << a[i] <<' ';
t[a[i]]--;
//cout << t[a[i]] <<' '<< a[i] <<endl;
while (t[mx]==0&&mx>0) mx--;
cx=mx-1;
while (t[cx]==0&&cx>0) cx--;
continue;
}
mk[v[mx][tb[mx]-t[mx]]]=1;
t[mx]--,t[a[i]]--,flag=1;
int sum=mx;
while (t[mx]==0&&mx>0) mx--;
cx=mx-1;
while (t[cx]==0&&cx>0) cx--;
if (mx>a[i]) cout << sum <<' ';
else cout << sum <<' '<< a[i] <<' ';
}
cout <<endl;
}
return 0;
}