Pagini recente » Cod sursa (job #1019882) | Cod sursa (job #2394817) | Cod sursa (job #1311647) | Cod sursa (job #856203) | Cod sursa (job #256777)
Cod sursa(job #256777)
#include <stdio.h>
#define nmax 100001
FILE *in,*out;
long int a[nmax],lung[nmax],ant[nmax],b[nmax],max;
int main()
{
long int n,i,ok=1,j,poz;
in = fopen ("scmax.in","r");
out =fopen ("scmax.out","w");
fscanf(in,"%d",&n);
for(i=1;i<=n;i++)
fscanf(in,"%ld",&a[i]);
for(i=1;i<=n;i++)
lung[i]++;
lung[1]=1;
for(i=2;i<=n;i++)
{
for(j=i-1;j>0;j--)
if(a[j]<a[i] && lung[i]<lung[j]+1 )
{
lung[i]=lung[j]+1;
ant[i]=j;
}
}
for(i=1;i<=n;i++)
if(lung[i]>max)
{
max=lung[i];
poz=i;
}
for(j=1,i=poz;ok!=0;j++)
{
if(ant[i]==0)
ok=0;
b[j]=a[i];
i=ant[i];
}
fprintf(out,"%ld \n",max);
for(i=j-1;i>0;i--)
fprintf(out,"%ld ",b[i]);
fclose(in);
fclose(out);
return 0;
}