fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. const long long MaxN = 1e5 +5;
  5.  
  6. long long n, a[MaxN];
  7.  
  8. struct DSU
  9. {
  10. long long lab[MaxN];
  11.  
  12. void init()
  13. {
  14. for (long long i=1; i<=n+1; i++)
  15. {
  16. lab[i]=i;
  17. }
  18. }
  19.  
  20. long long get_root(long long u)
  21. {
  22. if (lab[u]==u) return u;
  23. return lab[u]=get_root(lab[u]);
  24. }
  25. };
  26.  
  27. DSU dsu;
  28.  
  29. void input()
  30. {
  31. cin >> n;
  32.  
  33. for (long long i=1; i<=n ;i++)
  34. {
  35. cin >> a[i];
  36. }
  37. }
  38.  
  39. void solve()
  40. {
  41. dsu.init();
  42.  
  43. for (long long i=1; i<=n ;i++)
  44. {
  45. long long u=dsu.get_root(a[i]);
  46.  
  47. if (u==n+1)
  48. {
  49. u=dsu.get_root(1);
  50. }
  51.  
  52. cout << u << " ";
  53.  
  54. dsu.lab[u]=dsu.get_root(u%n+1);
  55. }
  56. }
  57.  
  58. int main()
  59. {
  60. ios_base::sync_with_stdio(0);
  61. cin.tie(0);
  62.  
  63. input();
  64. solve();
  65. }
  66.  
Success #stdin #stdout 0s 5312KB
stdin
Standard input is empty
stdout
Standard output is empty