Pagini recente » Cod sursa (job #2980227) | Cod sursa (job #666148) | Cod sursa (job #507575) | Cod sursa (job #1181977) | Cod sursa (job #330908)
Cod sursa(job #330908)
#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=1;
for(i=2; i<=n; ++i) if( l[i]>max ) max=l[i], p2=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;
}