Cod sursa(job #2273002)

Utilizator ValentinSavoiuFMI Savoiu Valentin-Marian ValentinSavoiu Data 30 octombrie 2018 21:09:48
Problema Sortare Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.3 kb
#include <fstream>
#define Nmax 5001
using namespace std;
ifstream f("sortare.in");
ofstream g("sortare.out");
//start= 8:53 PM
//finish=9:08 PM
//I-am promis Mirunei ca termin in 10 minute. Sunt o rusine :'( .
int A[Nmax],B[Nmax],C[Nmax],a,b,c,N,i,j;
void solve1(int ind,int len)
{
    C[ind]= len;
    int i;
    for(i=1;i<ind;i++) C[i]=B[i];
    for(i=ind+1;i<=len;i++) C[i]=B[i-1];
    C[0]=B[0]+1;
}
void solve2(int ind1,int ind2,int len)
{
    C[ind1]=len;
    C[ind2]=len-1;
    int i=1;
    while(i!=ind1&&i!=ind2)
    {
        C[i]=A[i];
        ++i;
    }
    ++i;
    while(i!=ind1&&i!=ind2)
    {
        C[i]=A[i-1];
        ++i;
    }
    ++i;
    while(i!=len+1)
    {
        C[i]=A[i-2];
        ++i;
    }
    C[0]=A[0]+1;
}
int main()
{
    f>>N;
    B[0]=1;
    B[1]=1;
    for(i=2;i<=N;i++)
    {
        f>>a>>b>>c;
        if(a==b)
        {
            solve1(a,i);

        }
        else if(a==c)
        {
            solve1(c,i);

        }
        else if(b==c)
        {
            solve1(b,i);

        }
        else solve2(a,b,i);
        for(int j=0;j<=i;j++)
        {
            A[j]=B[j];
            B[j]=C[j];
            C[j]=0;
        }
    }
    g<<B[0]<<'\n';
    for(i=1;i<=N;i++) g<<B[i]<<' ';
    return 0;
}