ZhenyaDudko

Untitled

Sep 11th, 2022
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.63 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <algorithm>
  4. #include <unordered_set>
  5.  
  6. using namespace std;
  7.  
  8. int main() {
  9. ios::sync_with_stdio(false);
  10. cin.tie(nullptr);
  11. int t;
  12. cin >> t;
  13. while (t--) {
  14. int n;
  15. cin >> n;
  16. vector<pair<int, int>> v(n);
  17. for (int i = 0; i < n; i++) {
  18. cin >> v[i].first;
  19. v[i].second = i;
  20. }
  21. sort(v.rbegin(), v.rend());
  22. vector<int> counts;
  23. for (int i = 0; i < n; i++) {
  24. if (i == 0 || v[i - 1].first != v[i].first) {
  25. counts.push_back(1);
  26. } else {
  27. counts.back()++;
  28. }
  29. }
  30. vector<int> ans_counts(counts.size());
  31. int prev = counts[0];
  32. int cur = 0;
  33. int star = 4;
  34. ans_counts[0] = 5;
  35. for (int i = 1; i < counts.size(); i++) {
  36. cur += counts[i];
  37. ans_counts[i] = star;
  38. if ((star == 1 && i == counts.size() - 1 || star > 1) && cur > prev) {
  39. prev = cur;
  40. star--;
  41. cur = 0;
  42. }
  43. }
  44. vector<int> ans(n);
  45. int ind = 0;
  46. for (int i = 0; i < counts.size(); i++) {
  47. for (int j = 0; j < counts[i]; j++) {
  48. if (star > 0) {
  49. ans[v[ind].second] = -1;
  50. } else {
  51. ans[v[ind].second] = ans_counts[i];
  52. }
  53. ind++;
  54. }
  55. }
  56. for (int i = 0; i < n; i++) {
  57. cout << ans[i] << " ";
  58. }
  59. cout << "\n";
  60. }
  61.  
  62. }
  63.  
Advertisement
Add Comment
Please, Sign In to add comment