Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
33633 fxyAKIOI__MLH 【J】T5 小清新桂冠题 C++ 通过 100 134 MS 137768 KB 1253 2024-10-16 18:23:37

Tests(45/45):


#include<bits/stdc++.h> using namespace std; long long T,n,b[200005],a[200005],y[200005]; queue<long long>poi[200005]; int main(){ scanf("%lld",&T); while(T--){ scanf("%lld",&n); for(int i=1;i<=n;i++){ y[i]=0; } for(int i=1;i<=n;i++)while(!poi[i].empty())poi[i].pop(); for(int i=1;i<=n;i++){ scanf("%lld",&b[i]); poi[b[i]].push(i); } long long flag=1; for(int i=1;i<=n;i++){ if(poi[i].empty())continue; if(i==1){ y[1]=poi[1].front(); while(!poi[i].empty()){ a[poi[i].front()]=poi[i].front(); poi[i].pop(); } continue; } y[i]=poi[i].front(); while(poi[i].size()>=i){ long long ft=poi[i].front(),lt=poi[i].front(); poi[i].pop(); for(int j=2;j<=i;j++){ a[lt]=poi[i].front(); lt=poi[i].front(); if(j==i){ a[poi[i].front()]=ft; } poi[i].pop(); } } if(poi[i].empty())continue; if(y[i-1]==0){ printf("No\n"); flag=0; break; } else{ while(!poi[i].empty()){ a[poi[i].front()]=y[i-1]; poi[i].pop(); } } } if(flag==1){ printf("Yes\n"); for(int i=1;i<=n;i++){ printf("%lld ",a[i]); } printf("\n"); } } return 0; }


测评信息: