Pagini recente » Cod sursa (job #1576054) | Cod sursa (job #547845) | Cod sursa (job #2868644) | Arhiva de probleme | Cod sursa (job #202138)
Cod sursa(job #202138)
#include <stdio.h>
#define N 1000
long scmax[N];
long nivel[N];
long tata[N];
long n;
FILE *fin,*fout;
void pr(long i)
{if(tata[i])
{pr(tata[i]);}
fprintf(fout,"%ld ",scmax[i]);
}
int main ()
{fin=fopen("scmax.in","r");
fout=fopen("scmax.out","w");
long i,j,nt,nmax,flag,k; //nivel maxim
fscanf(fin,"%ld",&n);
for (i=1;i<=n;i++)
{fscanf(fin,"%ld",&scmax[i]);}
nivel[1]=1;
for (i=2,nmax=1;i<=n;i++)
{nivel[i]=1;//in caz ca nu se intampla nimic ramane 1
for(k=nmax;k>=1;k--)
{flag=1;
for (j=i-1;j>=1;j--)
{if(nivel[j]==k&&scmax[j]<scmax[i])
{nivel[i]=k+1;
nmax=k+1;
tata[i]=j;
flag=0;break;
}
}
if(flag==0){break;}
}
}
for (i=0;i<=n;i++)
{if(nivel[i]==nmax)
{fprintf(fout,"%ld\n",nmax);
pr(i);
}
}
fclose(fout);
return 0;
}