Pagini recente » Cod sursa (job #1180983) | Cod sursa (job #847768) | Cod sursa (job #1871849) | Cod sursa (job #1130042) | Cod sursa (job #3126917)
#include <stdio.h>
#include <stdlib.h>
FILE *fi,*fo;
void afisare(int *A, int *I, int poz)
{
if (poz!=-1)
{
afisare(A, I, I[poz]);
fprintf(fo,"%d ",A[poz]);
}
}
int main()
{
fi=fopen("scmax.in","r");
fo=fopen("scmax.out","w");
int n,A[1001],lmax[1001],I[1001];
fscanf(fi,"%d",&n);
for (int i=0; i<n; i++)
fscanf(fi,"%d", &A[i]);
for (int i=0; i<n; i++)
{
lmax[i]=1;
I[i]=-1;
}
for (int i=0; i<n; i++)
for (int j=0; j<i; j++)
if (A[i]>A[j] && 1+lmax[j]>lmax[i])
{
lmax[i]=1+lmax[j];
I[i]=j;
}
int poz_max,val_max=0;
for (int i=0; i<n; i++)
if (lmax[i]>val_max)
{
val_max=lmax[i];
poz_max=i;
}
fprintf(fo,"%d\n", val_max);
afisare(A,I,poz_max);
return 0;
}