fork download
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. int main(){
  5. int t;
  6. cin >> t;
  7. while(t--){
  8. int n;
  9. cin >> n;
  10.  
  11. vector<int>vec(n);
  12. for(int i=0; i< n; ++i) {
  13. cin >> vec[i];
  14. }
  15.  
  16. unordered_map<int,int> mp;
  17. for(int i=0; i<vec.size(); ++i) {
  18. mp[vec[i]]++;
  19. }
  20.  
  21. bool flag = true;
  22. for(int i=0; i<vec.size(); ++i) {
  23. if(mp[vec[i]] == 1) {
  24. flag = false;
  25. break;
  26. }
  27. }
  28.  
  29. if(!flag) {
  30. cout << -1 << endl;
  31. continue;
  32. }
  33.  
  34. vector<int> ans;
  35. vector<pair<int,int>> pairs;
  36.  
  37. int i = 0, j = 0;
  38. while(i < vec.size()) {
  39. while(j < vec.size() && vec[i] == vec[j]) j++;
  40.  
  41. pairs.push_back({i, j-1});
  42. i=j;
  43. }
  44.  
  45. for(int i=0; i<pairs.size(); ++i) {
  46. ans.push_back(pairs[i].second);
  47. for(int j=pairs[i].first; j < pairs[i].second; ++j) {
  48. ans.push_back(j);
  49. }
  50. }
  51.  
  52. for(int i=0; i<ans.size(); ++i) {
  53. cout << ans[i]+1 << " ";
  54. }
  55. cout << endl;
  56.  
  57.  
  58.  
  59. }
  60.  
  61. }
  62.  
Success #stdin #stdout 0.01s 5284KB
stdin
2
5
1 1 1 1 1
6
3 6 8 13 15 21
stdout
5 1 2 3 4 
-1