Pagini recente » Cod sursa (job #2831129) | Cod sursa (job #1159958) | Cod sursa (job #393899) | Cod sursa (job #1130562) | Cod sursa (job #2273002)
#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;
}