Pagini recente » Monitorul de evaluare | Cod sursa (job #390117)
Cod sursa(job #390117)
#include<stdio.h>
int main()
{freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
int n=0,i=0,j=0,max=0,poz=0;
char log=0;
long v[100001];
int c[100001],d[100001];
scanf("%d",&n);
for(i=0;i<n;i++)
scanf("%ld",&v[i]);
c[n-1]=-1;
d[n-1]=1;
for(i=n-2;i>=0;i--)
{log=0;
for(j=i;j<n&&!log;j++)
if(v[j]> v[i])
{c[i]=j;
d[i]=d[j]+1;
log=1;}
if(max<d[i])
{max=d[i];
poz=i;}
if(log==0)
{d[i]=1;
c[i]=-1;}
}
printf("%d\n",max);
while(poz!=-1)
{printf("%ld ",v[poz]);
poz=c[poz];}
fclose(stdin);
fclose(stdout);
return 0;
}