Pagini recente » Cod sursa (job #1527095) | Cod sursa (job #337098) | Cod sursa (job #1240843) | Cod sursa (job #1618940) | Cod sursa (job #330899)
Cod sursa(job #330899)
#include <cstdio>
#define DIM 100001
int l[DIM],n,p2,a[DIM],p[DIM],j,i,max;
using namespace std;
void fase1()
{
l[n]=1; p[n]=-1;
for( i=n-1; i>=1; --i)
for(l[i]=1, p[i]=-1,j=i+1; j<=n; ++j)
if(a[i] < a[j] && l[i]<l[j]+1 )
l[i]=l[j]+1; p[i]=j;
}
void fase2()
{
max=l[1];
p2=p[1];
for(i=2; i<=n; ++i) if(l[i]>max) max=l[i],p2=p[i]; //determin maximul
printf("%d\n",max); //lungimea cmlsc
for(i=p2; i!=-1; i=p[i])
printf("%d ",a[i]);
}
void read()
{
scanf("%d\n",&n);
for(i=1; i<=n; ++i) scanf("%d",&a[i]);
}
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
read();
fase1();
fase2();
return 0;
}