Advertisement
wym1111

Untitled

Jul 10th, 2024
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.26 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. using ll = long long;
  5. #define endl '\n'
  6. const int N = 2e3 + 30;
  7.  
  8. int n;
  9. int a[N], b[N], pos[N];
  10.  
  11. void solve() {
  12.     cin >> n;
  13.     for (int i = 1; i <= n; i ++) {
  14.         cin >> a[i];
  15.     }
  16.     for (int i = 1; i <= n; i ++) {
  17.         cin >> b[i];
  18.         pos[b[i]] = i;
  19.     }
  20.     vector<pair<int, int>> ans;
  21.     for (int now = n; now >= 1; now --) {
  22.         int l = 1, r = 1;
  23.         while (a[l] != now) l ++;
  24.         r = pos[a[l]];
  25. //      cout << now << ' ' << l << ' ' << r << endl;
  26. //      for (int i = 1; i <= n; i ++) cout << a[i] << " \n"[i == n];
  27.         if (l == r) continue;
  28.         if (l > r || a[r] > a[l]) {
  29. //          cout << a[l] << ' ' << a[r] << endl;
  30.             cout << -1 << endl;
  31.             return;
  32.         }
  33.         deque<int> st;
  34.         for (int i = l + 1; i <= r; i ++) {
  35.             if (a[i] > now) continue;
  36.             if (!st.empty() && a[st.back()] < a[i]) st.pop_back();
  37.             st.push_back(i);
  38.         }
  39.         int lst = l;
  40.         for (auto x: st) {
  41.             swap(a[lst], a[x]);
  42.             lst = x;
  43.             ans.push_back({l, x});
  44.         }
  45.     }
  46.     for (int i = 1; i <= n; i ++) {
  47.         assert(a[i] == b[i]);
  48.     }
  49.     cout << ans.size() << endl;
  50.     for (auto [l, r]: ans) {
  51.         cout << l << ' ' << r << endl;
  52.     }
  53. }
  54.  
  55. signed main() {
  56.     ios::sync_with_stdio(false);
  57.     cin.tie(0), cout.tie(0);
  58.     int _ = 1;
  59.     cin >> _;
  60.     while (_--){
  61.         solve();
  62.     }
  63.     return 0;
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement