绝望了都
查看原帖
绝望了都
1152179
baibai_world楼主2024/1/26 20:37

已经和答案对拍了好多随机样例了,但是一直过不了第一个

#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;
}
2024/1/26 20:37
加载中...