Pagini recente » Cod sursa (job #2436297) | Cod sursa (job #2288407) | Cod sursa (job #849999) | Cod sursa (job #49823) | Cod sursa (job #1088311)
#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++)
{
lg[i]=1; prec[i]=0;
for(j=1;j<i;j++)
{
if(lg[j]+1>lg[j] && a[j]<a[i])
{
lg[i]=lg[j]+1;
prec[i]=j;
}
}
}
maxim=-1;
for(i=1;i<=n;i++)
{
if(lg[i]>maxim)
{
maxim=lg[i];
poz=i;
}
}
fprintf(fout,"%d\n",maxim);
i=0;
while(prec[poz]!=0)
{
v[++i]=a[poz];
poz=prec[poz];
}
v[++i]=a[poz];
for(j=i;j>0;j--)
{
fprintf(fout,"%d ",v[j]);
}
fclose(fin);
fclose(fout);
return 0;
}