Cod sursa(job #610093)
#include<fstream.h>
#include<stdio.h>
ifstream f("scmax.in");
ofstream g("scmax.out");
long i,poz,n,j,max;
long a[100003],l[100003],s[100003];
int main(){
FILE * stefi;
stefi=fopen("scmax.in","r");
fscanf(stefi,"%d",&n);
for (i=1;i<=n;i++)
fscanf(stefi,"%d",&a[i]);
l[n]=1;
for (i=n-1;i>0;i--)
{ max=0;
poz=0;
for (j=i+1;j<=n;j++)
{ if (l[j]>max && a[j]>a[i])
{ max=l[j];
poz=j;
}
}
l[i]=l[poz]+1;
s[i]=poz;
}
max=0;
poz=0;
for (i=1;i<=n;i++)
if (l[i]>max) { max=l[i]; poz=i; }
g<<max<<'\n';
while (s[poz]!=poz)
{ g<<a[poz]<<' '; poz=s[poz];
}
g<<'\n';
f.close();
g.close();
return 0;
}