Pagini recente » Cod sursa (job #2297700) | Cod sursa (job #1000228) | Cod sursa (job #1756016) | Cod sursa (job #2348221) | Cod sursa (job #1088330)
#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,cnt;
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[i] && 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=poz;
cnt=0;
while(i)
{
v[++cnt]=a[i];
i=prec[i];
}
for(j=cnt;j>0;j--)
{
fprintf(fout,"%d ",v[j]);
}
fclose(fin);
fclose(fout);
return 0;
}