昨天训练打的Gym,今天写题解。
这个题就是输出的时候有点小问题,其他的都很简单。
代码:
#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
const int N=1e6+;
int a[N];
int main(){
int n;
while(~scanf("%d",&n)){
int num=;
for(int i=;i<=n;i++){
scanf("%d",&a[i]);
if(a[i]==i)num++;
}
if(num%==)cout<<num/<<endl;
else cout<<num/+<<endl;
int ans=;
int temp;
for(int i=;i<=n;i++){
if(a[i]==i){
ans++;
if(ans==){
printf("%d %d\n",temp,i);
swap(a[temp],a[i]);
ans=;
}
else temp=i;
}
}
if(num%!=){
for(int i=;i<=n;i++){
if(a[i]!=i){
printf("%d %d\n",i,temp);
break;
}
}
}
}
return ;
}