Cod sursa(job #2062143)

Utilizator ScarymovieMocanu Alexandru Scarymovie Data 10 noiembrie 2017 00:15:54
Problema Sortare Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include <fstream>
#include<algorithm>
#define NMAX 5005
using namespace std;
int nr[NMAX][3],v[NMAX]= {},n,NrPasi=0;
ifstream f("sortare.in");
ofstream g("sortare.out");
void Insereaza(int poz,int x)
{
    int aux=x,aux2=v[poz],i;
    for(i=poz; i<x; ++i)
    {
        v[i]=aux;
        aux=aux2;
        aux2=v[i+1];
    }
    v[x]=aux;
}
void solutie(int Dr)
{
    int Lungime=Dr,i;
    int a=nr[Lungime][0],b=nr[Lungime][1],c=nr[Lungime][2];
    if(Lungime==0) return;
    if(Lungime==1)
    {
        v[1]=1;
        return;
    }
    NrPasi++;
    if(a==b || b==c)
    {
        solutie(Dr-1);
        for(i=Dr;i>b;--i) v[i]=v[i-1];
        v[b]=Dr;
    }
    else
    {
        solutie(Dr-2);
        for(i=Dr-1;i>b;--i) v[i]=v[i-1];
        v[b]=Dr-1;
        for(i=Dr;i>c;--i) v[i]=v[i-1];
        v[c]=Dr;
    }
}
int main()
{
    f>>n;
    int i;
    for(i=2; i<=n; ++i) {f>>nr[i][0]>>nr[i][1]>>nr[i][2];sort(nr[i],nr[i]+2);}
    solutie(n);
    g<<NrPasi<<'\n';
    for(i=1; i<=n; ++i) g<<v[i]<<' ';
    return 0;
}