Pagini recente » Cod sursa (job #77899) | Cod sursa (job #872888) | Cod sursa (job #875293) | Cod sursa (job #2259349) | Cod sursa (job #1088310)
#include <stdio.h>
#define IN "scmax.in"
#define OUT "scmax.out"
#define NMAX 100005
int a[NMAX],lg[NMAX],prec[NMAX],v[NMAX];
int n,i,j,poz,maxim;
int main()
{
FILE * fin=fopen(IN,"r");
FILE * fout=fopen(OUT,"w");
fscanf(fin,"%d",&n);
for(i=1;i<=n;i++)
fscanf(fin,"%d",&a[i]);
lg[1]=1;
prec[1]=0;
for(i=2;i<=n;i++)
{
maxim=lg[i]; poz=-1;
for(j=1;j<i;j++)
{
if(lg[j]+1>maxim && a[j]<a[i])
{
maxim=lg[j]+1;
poz=j;
}
}
lg[i]=maxim;
prec[i]=poz;
}
maxim=-1;
for(i=1;i<=n;i++)
{
if(lg[i]>maxim)
{
maxim=lg[i];
poz=i;
}
}
fprintf(fout,"%d\n",maxim+1);
i=0;
while(prec[poz]!=0)
{
v[++i]=a[poz];
poz=prec[poz];
}
for(j=i;j>0;j--)
{
fprintf(fout,"%d ",v[j]);
}
fclose(fin);
fclose(fout);
return 0;
}