Advertisement
bibaboba12345

ХУЙ

Jul 23rd, 2021
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.52 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <iostream>
  3. #include <cstdio>
  4. #include <string>
  5. #include <algorithm>
  6. #include <cmath>
  7. #include <vector>
  8. #include <queue>
  9. #include <stack>
  10. #include <deque>
  11. #include <set>
  12. #include <map>
  13. #include <climits>
  14. #include <cstdlib>
  15. #include<time.h>
  16. #include<iomanip>
  17. using namespace std;
  18. const int N = 3e5 + 7;
  19. long long t, I, i, n, ed, cnt, k,ed2;
  20. long long a[N];
  21. long long num[N], col[N], ans[N],Num[N];
  22. int main() {
  23. std::ios::sync_with_stdio(false);
  24. cin.tie(0);
  25. cout.tie(0);
  26. cin >> t;
  27. for (I = 0; I < t; I++) {
  28. cin >> n >> k;
  29. ed = 0;
  30. for (i = 1; i <= n; i++) {
  31. num[i] = 0;
  32. col[i] = 0;
  33. ans[i] = 0;
  34. }
  35. ans[0] = 0;
  36. for (i = 0; i < n; i++) {
  37. cin >> a[i];
  38. num[a[i]]++;
  39. }
  40. for (i = 1; i <= n; i++) {
  41. if (num[i] < k) {
  42. ed += num[i];
  43. }
  44. if (num[i] >= k) {
  45. num[i] = -1;
  46. col[i] = 1;
  47. }
  48. }
  49. ed -= ed % k;
  50. ed2 = 0;
  51. for (i = 1; i <= n; i++) {
  52. if (num[i] != -1 && ed2 < ed) {
  53. col[i] = ed2 % k;
  54. ed2 += num[i];
  55. if (ed2 <= ed) {
  56. Num[i] = num[i];
  57. }
  58. else {
  59. Num[i] = num[i] - (ed2 - ed);
  60. }
  61. num[i] = -2;
  62. }
  63. }
  64.  
  65. for (i = 0; i < n; i++) {
  66. if (num[a[i]] == -1) {
  67. if (col[a[i]] <= k) {
  68. ans[i] = col[a[i]];
  69. col[a[i]]++;
  70. }
  71. }
  72. if (num[a[i]] == -2) {
  73. if (Num[a[i]] > 0) {
  74. ans[i] = col[a[i]] % k + 1;
  75. col[a[i]]++;
  76. Num[a[i]]--;
  77. }
  78. }
  79. }
  80. for (i = 0; i < n; i++) {
  81. cout << ans[i] << " ";
  82. }
  83. cout << "\n";
  84. }
  85. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement