Cod sursa(job #1512624)

Utilizator enedumitruene dumitru enedumitru Data 28 octombrie 2015 13:00:30
Problema A+B Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <fstream>
#define D 1000002
using namespace std;
ifstream f("album.in");
ofstream g("album.out");
int n,nr,nrm,ok=1;
int x[D],y[D],z[D];

void swp(int &a, int &b)
{
    int aux=a;
    a=b;
    b=aux;
}

void urm()
{
    ok=0;
    for(int i=1;i<n;++i)
    {
        if(x[i]!=z[i])
        {
            swp(x[y[0]],x[i]);
            swp(y[0],y[i]);
            nr++;
            ok=1;
        }
    }
}
int main()
{   f>>n;
    int i;
    for(i=0;i<n;++i) f>>x[i]; //x=primul sir
    for(i=0;i<n;++i) y[x[i]]=i; //y=inversa
    for(i=0;i<n;++i) f>>z[i]; //z=sirul final

    while(ok)
    {

        if(x[y[0]]==z[y[0]]) urm();
        else
        {
            int c1=x[y[z[y[0]]]],c2=x[y[0]];
            swp(x[y[z[y[0]]]],x[y[0]]);

            swp(y[0],y[y[0]]);
            nr++;
        }
    }
    g<<nr;
    g.close();f.close();
    return 0;
}