已经和答案对拍了好多随机样例了,但是一直过不了第一个
#include <bits/stdc++.h>
using namespace std;
void solve()
{
int n;
cin >> n;
int a[n], b[n];
for (int i = 0;i < n;i++) cin >> a[i];
for (int i = 0;i < n;i++) cin >> b[i];
unordered_map<int, int>mp1, mp2;
for (int i : a) ++mp1[i];
for (int i : b) ++mp2[i];
for (auto p : mp1)
if (p.second != mp2[p.first])
{
cout << "NO\n";
return;
}
cout << "YES\n";
for (int i = 0;i < n;i++)
{
if (a[i] ^ b[i])
for (int j = i;j < n;j++)
{
if (a[i] == b[j])
{
for (int k = j;k > i;k--)
{
swap(b[k - 1], b[k]);
cout << k + 1 << ' ' << k << '\n';
}
break;
}
}
}
cout << "0 0\n";
}
int main()
{
ios::sync_with_stdio(0);
int t;
cin >> t;
while(t--) solve();
return 0;
}