Pagini recente » Cod sursa (job #3206115) | Cod sursa (job #2461575) | Cod sursa (job #1968583) | Cod sursa (job #2312729) | Cod sursa (job #2379537)
#include <bits/stdc++.h>
using namespace std;
ifstream f("pachete.in");
ofstream g("pachete.out");
int a[103],poz[103],n;
deque <int> p1,p2;
int main()
{
int i,j,sum=0,emptyslot,x;
f>>n;
emptyslot=n+1;
for(i=1;i<=n;++i){
f>>a[i];
poz[a[i]]=i;
}
bool ok=1;
while(ok){
ok=0;
for(i=1;i<=n;++i){
if(a[i]==i)
continue;
else {
ok=1;
if(i!=emptyslot){
sum+=2;
p1.push_back(i); p2.push_back(emptyslot);
} else {
++sum;
}
p1.push_back(poz[i]); p2.push_back(i);
a[emptyslot]=a[i];
poz[a[i]]=emptyslot;
emptyslot=poz[i];
a[poz[i]]=0;
a[i]=i;
poz[i]=i;
}
}
}
g<<sum<<'\n';
while(!p1.empty()){
g<<p1.front()<<" "<<p2.front()<<'\n';
p1.pop_front();
p2.pop_front();
}
return 0;
}