Cod sursa(job #2037172)

Utilizator RaduMirceaAndreiRadu Mircea Andrei RaduMirceaAndrei Data 11 octombrie 2017 20:31:00
Problema Sortare Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.29 kb
# include <fstream>
# define DIM 5010
using namespace std;
ifstream fin("sortare.in");
ofstream fout("sortare.out");
int v[DIM],a[DIM],b[DIM],c[DIM],n,m,nr,i,pas,ok;
int main () {
    fin>>n;
    m=n;
    for(i=2;i<=n;i++){
        fin>>a[i]>>b[i]>>c[i];
        if(a[i]>b[i])
            swap(a[i],b[i]);
        if(b[i]>c[i])
            swap(b[i],c[i]);
        if(a[i]>b[i])
            swap(a[i],b[i]);
    }
    for(;n;){
        pas++;
        if(n==1){
            for(i=1;v[i]!=0;i++);
            v[i]=1;
            n=0;
            continue;
        }
        if(a[n]==b[n]||b[n]==c[n]){
            nr=0;
            for(i=1;nr!=b[n];i++)
                if(v[i]==0)
                    nr++;
            v[i-1]=n;
            n--;
            continue;
        }
        nr=0;
        ok=1;
        if(n==2)
            pas++;
        for(i=1;;i++){
            if(v[i]==0)
                nr++;
            if(nr==a[n]&&v[i]==0&&ok){
                v[i]=n;
                n--;
                ok=0;
            }
            if(nr==b[n+1]&&!ok){
                v[i]=n;
                n--;
                break;
            }
        }
    }
    fout<<pas<<"\n";
    for(i=1;i<=m;i++)
        fout<<v[i]<<" ";
    fout<<"\n";
    return 0;
}