Advertisement
bibaboba12345

Untitled

Jul 8th, 2022
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.40 KB | None | 0 0
  1. #define _CRT_SECURE_NO_WARNINGS
  2. #include <iostream>
  3. #include <bitset>
  4. #include <vector>
  5. #include <algorithm>
  6. #include <map>
  7. #include <set>
  8. #include <cassert>
  9. #define int long long
  10. const int N = 2e5 + 7;
  11. using namespace std;
  12. int n,m, a[N],b[N], x;
  13.  
  14. struct Otr {
  15. int l, r;
  16. int ind;
  17. };
  18.  
  19. bool operator <(Otr a, Otr b) {
  20. if (a.r == b.r) {
  21. return a.ind < b.ind;
  22. }
  23. return a.r < b.r;
  24. }
  25.  
  26. set<Otr> s;
  27.  
  28. vector<Otr> add[N], del[N];
  29. int ans[N];
  30. void solve() {
  31. cin >> n;
  32. for (int i = 1; i <= n; i++) {
  33. cin >> a[i];
  34. int x = a[i];
  35. int l, r;
  36. if (a[i] != 0) {
  37. l = i / (a[i] + 1) + 1;
  38. r = i / a[i];
  39. }
  40. else {
  41. l = i + 1;
  42. r = n;
  43. }
  44. add[l].push_back({ l,r, i });
  45. }
  46. s.clear();
  47. for (int i = 1; i <= n; i++) {
  48. for (auto u : add[i]) {
  49. s.insert(u);
  50. }
  51. add[i].clear();
  52. if (s.size()) {
  53. auto u = *s.begin();
  54. ans[i] = u.ind;
  55. s.erase(s.begin());
  56. }
  57. }
  58. for (int i = 1; i <= n; i++) {
  59. cout << ans[i] << " ";
  60. }
  61. cout << "\n";
  62. }
  63.  
  64. signed main()
  65. {
  66. #ifdef _DEBUG
  67. freopen("input.txt", "r", stdin);
  68. #else
  69. std::ios::sync_with_stdio(false);
  70. cin.tie(0);
  71. #endif
  72. int t;
  73. cin >> t;
  74. while (t--) {
  75. solve();
  76. }
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement