제출 #950192

#제출 시각아이디문제언어결과실행 시간메모리
950192pccCat (info1cup19_cat)C++17
0 / 100
8 ms2904 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define pll pair<ll,ll>
#define pii pair<int,int>
#define fs first
#define sc second
#define tlll tuple<ll,ll,ll>


const int mxn = 3e6+10;
int N;
int arr[mxn],pos[mxn];

void change(int a,int b){
	swap(pos[arr[a]],pos[arr[b]]);
	swap(arr[a],arr[b]);
	a = N-a+1,b = N-b+1;
	swap(pos[arr[a]],pos[arr[b]]);
	swap(arr[a],arr[b]);
	return;
}

void solve(){
	cin>>N;
	for(int i = 1;i<=N;i++)cin>>arr[i],pos[arr[i]] = i;
	vector<pii> ans;
	for(int i = 1;i<=N;i++){
		if(pos[arr[i]] = i)continue;
		int a = i,b = pos[arr[i]];
		change(a,b);
	}
	for(int i = 1;i<=N;i++){
		if(arr[i] != i){
			cout<<"-1\n";
			return;
		}
	}
	cout<<ans.size()<<' '<<ans.size()<<'\n';
	for(auto &i:ans)cout<<i.fs<<' '<<i.sc<<'\n';
	return;
}

int main(){
	ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
	int t;
	cin>>t;
	while(t--)solve();
}

컴파일 시 표준 에러 (stderr) 메시지

cat.cpp: In function 'void solve()':
cat.cpp:30:18: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
   30 |   if(pos[arr[i]] = i)continue;
      |      ~~~~~~~~~~~~^~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...