Comments

Cᴏɴɢʀᴀᴛs ᴅᴏᴍɪɴᴀᴛᴏʀ

Oɴ ʀᴇᴀᴄʜɪɴɢ Lᴇɢᴇɴᴅᴀʀʏ Gʀᴀɴᴅᴍᴀsᴛᴇʀ

CᴏᴅᴇFᴏʀᴄᴇs ᴛᴏᴘ ᴛɪᴇʀ

Yᴏᴜ ᴀʀᴇ ɴᴏᴡ ᴏғғɪᴄɪᴀʟʟʏ ʟᴇɢᴇɴᴅᴀʀʏ

CAN ANYONE TELL ME WHERE MY CODE IS FAILING ? for C

// this is the code ~~~~~

include <bits/stdc++.h>

using namespace std;

define inf LLONG_MAX

define minf LLONG_MIN

define pb push_back

define ll long long

define vll vector

define yes cout << "YES\n"

define no cout << "NO\n"

define fori_n for (ll i = 0; i < n; i++)

define Laflame ios_base::sync_with_stdio(false); cin.tie(NULL);

define msll multiset

define msllg multiset<ll, greater>

include <ext/pb_ds/assoc_container.hpp>

include <ext/pb_ds/tree_policy.hpp>

using namespace __gnu_pbds;

ifndef ONLINE_JUDGE

define debug(x) cerr << #x << " "; _print(x); cerr << endl;

else

define debug(x)

endif

void _print(int t) { cerr << t; } void _print(string t) { cerr << t; } void _print(char t) { cerr << t; } void _print(double t) { cerr << t; } void _print(ll t) { cerr << t; }

template <class T, class V> void _print(pair<T, V> p); template void _print(vector v); template void _print(set v); template <class T, class V> void _print(map<T, V> v); template void _print(multiset v); template void _print(multiset<T, greater> v);

template <class T, class V> void _print(pair<T, V> p) { cerr << "{"; _print(p.first); cerr << ","; _print(p.second); cerr << "}"; } template void _print(vector v) { cerr << "[ "; for (T i : v) { _print(i); cerr << " "; } cerr << "]"; } template void _print(set v) { cerr << "[ "; for (T i : v) { _print(i); cerr << " "; } cerr << "]"; } template void _print(multiset v) { cerr << "[ "; for (T i : v) { _print(i); cerr << " "; } cerr << "]"; } template void _print(multiset<T, greater> v) { cerr << "[ "; for (T i : v) { _print(i); cerr << " "; } cerr << "]"; } template <class T, class V> void _print(map<T, V> v) { cerr << "[ "; for (auto i : v) { _print(i); cerr << " "; } cerr << "]"; }

void run() { ll n ; cin>>n; vll arr(n),brr(n); map<ll,ll> mp ; fori_n{ cin>>arr[i]; mp[arr[i]] = i ; } fori_n cin>>brr[i];

ll cnt=0,same =0; fori_n {

if(arr[i] == brr[i])same++;
else
{
    if(arr[mp[brr[i]]]==brr[i])cnt++;
    else
    {
        cout<<-1<<endl;
        return ;
    }
}

}

vector<pair<ll,ll>> ans ; map<pair<ll,ll>,ll> mi ;

fori_n { mi[{arr[i],brr[i]}] = i ; }

if(n%2) { if(same == 1 and cnt == (n-1) ) {

for(int i = 0 ; i<n/2;i++)
    {
        if(arr[i]!=brr[i])
        {
            if(mi[{brr[i],arr[i]}]==(n-i-1))continue ;
        ans.pb({mi[{brr[i],arr[i]}]+1 ,n-i });
        mi[{arr[n-i-1],brr[n-i-1]}] = mi[{brr[i],arr[i]}];

        swap(arr[mi[{brr[i],arr[i]}]],arr[n-i-1]);
         swap(brr[mi[{brr[i],arr[i]}]],brr[n-i-1]);
          mi[{brr[i],arr[i]}] = n-i-1;



        }

        else
        {
            if(mi[{brr[i],arr[i]}]==(n/2))continue ;
          ans.pb({mi[{brr[i],arr[i]}]+1 ,(n+1)/2 });
           mi[{arr[n/2],brr[n/2]}] = mi[{brr[i],arr[i]}];

        swap(arr[mi[{brr[i],arr[i]}]],arr[n/2]);
         swap(brr[mi[{brr[i],arr[i]}]],brr[n/2]);
          mi[{brr[i],arr[i]}] = n/2; 

        }



    }

}

else
{
    cout<<-1<<endl;
    return ;
}

}

else { if(same>0) { cout<<-1<<endl; return ; }

for(int i = 0 ; i<n/2;i++)
    {
        if(mi[{brr[i],arr[i]}]==(n-i-1))continue ;

        ans.pb({mi[{brr[i],arr[i]}]+1 ,n-i });
           mi[{arr[n-i-1],brr[n-i-1]}] = mi[{brr[i],arr[i]}];

        swap(arr[mi[{brr[i],arr[i]}]],arr[n-i-1]);
         swap(brr[mi[{brr[i],arr[i]}]],brr[n-i-1]);
           mi[{brr[i],arr[i]}] = n-i-1;




    }

}

cout<<ans.size()<<endl; for(auto it : ans) { cout<<it.first<<" "<<it.second<<endl; }

//debug(ans);

} int main() {

ifndef ONLINE_JUDGE

freopen("Error.txt", "w", stderr);

endif

Laflame
ll tc ;
cin>>tc;
for(int i = 1; i <= tc; i++){run();}

return 0;

}

~~~~~

ya true that!!