Cod sursa(job #2379537)

Utilizator VasileAmbreiajVasile Ambreiaj VasileAmbreiaj Data 13 martie 2019 19:59:25
Problema Pachete Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#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;
}