답안 #777215

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
777215 2023-07-08T19:14:31 Z HD1 Cat (info1cup19_cat) C++14
25 / 100
314 ms 18232 KB
//we are all lost trying to be someone.
#include <bits/stdc++.h>
#define fastio ios_base::sync_with_stdio(0); cin.tie(0);
#define sz(x) ll(x.size())
#define reve(x) reverse(x.begin(),x.end())
#define ff first
#define ss second
#define pb push_back
using namespace std;
typedef long long ll;
typedef long double ld;
typedef pair<ll,ll> ii;
typedef pair<ll, ii >tri;
const ll MAX=3*(1e6+100);
const ll mod=1e9+7;
const ll inf=1e9;
ll A[MAX], pos[MAX];
vector<ii> ans;
ll n;
bool sepuede(){
    ll sum=n+1;
    for(ll i=1; i<=n/2; i++){
        if(A[i]+A[sum-i]!=sum) return false;
    }
    ll cont=0;
    for(ll i=1; i<=n/2; i++){
        if(A[i]>n/2)cont++;
    }
    if(cont%2==1) return false;
    return true;
}
void solve(){
    cin>>n;
    for(ll i=1; i<=n; i++){
        cin>>A[i];
    }
    if(!sepuede()){
        cout<<-1<<'\n';
        return;
    }
    for(ll i=1; i<=n/2; i++){
        if(A[i]>n/2){
            if(A[A[i]]<=n/2 and n-i+1!=A[i]){
                ans.push_back({i,A[i]});
                ll aux=A[i];
                swap(A[i],A[A[i]]);
                swap(A[n-i+1],A[n-aux+1]);
            }
        }
    }
    ll j=(n/2)+1;
    for(ll i=1; i<=n/2; i++){
        if(A[i]>n/2){
            ans.push_back({j,i});
            ll aux=A[i];
            swap(A[i],A[j]);
            swap(A[n-i+1],A[n-j+1]);
        }
    }
    for(ll i=1; i<=n/2; i++){
        pos[A[i]]=i;
    }
    ll cont=0;
    for(ll i=1;  i<=n/2; i++){
        if(A[i]!=i){
            ll a=pos[i];
            ll b=A[i];
            ans.pb({a,i});
            swap(A[pos[i]],A[i]);
            pos[i]=i;
            pos[b]=a;
            cont++;
        }
    }
    /*
    for(ll i=1; i<=n/2; i++){
        cout<<A[i]<<" ";
    }
    cout<<'\n';*/
    cout<<sz(ans)<<" "<<sz(ans)<<'\n';
    for(ii x:ans){
        cout<<x.ff<<" "<<x.ss<<'\n';
    }
    ans.clear();
    return;
}
int main(){
   fastio;
   ll t;
   cin>>t;
   while(t--){
    solve();
   }
   return 0;
}

Compilation message

cat.cpp: In function 'void solve()':
cat.cpp:55:16: warning: unused variable 'aux' [-Wunused-variable]
   55 |             ll aux=A[i];
      |                ^~~
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 408 KB Given positions are equal
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 13 ms 1048 KB Output is correct
2 Correct 14 ms 980 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 408 KB Given positions are equal
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 13 ms 1048 KB Output is correct
2 Correct 14 ms 980 KB Output is correct
3 Correct 296 ms 15024 KB Output is correct
4 Correct 289 ms 15812 KB Output is correct
5 Correct 314 ms 18232 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 3 ms 408 KB Given positions are equal
2 Halted 0 ms 0 KB -