Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <vector>
- #include <algorithm>
- #include <unordered_set>
- using namespace std;
- int main() {
- ios::sync_with_stdio(false);
- cin.tie(nullptr);
- int t;
- cin >> t;
- while (t--) {
- int n;
- cin >> n;
- vector<pair<int, int>> v(n);
- for (int i = 0; i < n; i++) {
- cin >> v[i].first;
- v[i].second = i;
- }
- sort(v.rbegin(), v.rend());
- vector<int> counts;
- for (int i = 0; i < n; i++) {
- if (i == 0 || v[i - 1].first != v[i].first) {
- counts.push_back(1);
- } else {
- counts.back()++;
- }
- }
- vector<int> ans_counts(counts.size());
- int prev = counts[0];
- int cur = 0;
- int star = 4;
- ans_counts[0] = 5;
- for (int i = 1; i < counts.size(); i++) {
- cur += counts[i];
- ans_counts[i] = star;
- if ((star == 1 && i == counts.size() - 1 || star > 1) && cur > prev) {
- prev = cur;
- star--;
- cur = 0;
- }
- }
- vector<int> ans(n);
- int ind = 0;
- for (int i = 0; i < counts.size(); i++) {
- for (int j = 0; j < counts[i]; j++) {
- if (star > 0) {
- ans[v[ind].second] = -1;
- } else {
- ans[v[ind].second] = ans_counts[i];
- }
- ind++;
- }
- }
- for (int i = 0; i < n; i++) {
- cout << ans[i] << " ";
- }
- cout << "\n";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment