Run ID 作者 问题 语言 测评结果 分数 时间 内存 代码长度 提交时间
33596 林芳菲 【J】T5 小清新桂冠题 C++ 解答错误 80 182 MS 135816 KB 2110 2024-10-14 15:49:58

Tests(41/42):


#include <cstdio> #include <iostream> #include <algorithm> #include <queue> using namespace std; int t, n; int a[200010]; int b[200010]; int x[200010]; queue<int> q[200010]; int main() { cin >> t; while (t--) { cin >> n; for (int i = 1; i <= n; i++) cin >> b[i]; for (int i = 1; i <= n; i++) while (q[i].size()) q[i].pop(); for (int i = 1; i <= n; i++) q[b[i]].push(i); bool flag = true; for (int i = 1; i <= n; i++) { if (!q[i].size()) continue; if (i == 1) { x[i] = q[i].front(); while (q[i].size()) { int num = q[i].front(); q[i].pop(); a[num] = num; } } else { x[i] = q[i].front(); while (q[i].size() >= i) { int num = q[i].front(); q[i].pop(); int k = num; for (int j = 2; j <= i; j++) { int f = q[i].front(); q[i].pop(); a[k] = f; k = f; if (i == j) a[f] = num; } } if (!q[i].size()) continue; if (!x[i - 1]) { flag = false; break; } while (q[i].size()) { int num = q[i].front(); q[i].pop(); a[num] = x[i - 1]; } } } if (!flag) cout << "No" << endl; else { cout << "Yes" << endl; for (int i = 1; i <= n; i++) cout << a[i] << " "; cout << endl; } } return 0; }


测评信息: