Pagini recente » Cod sursa (job #2495475) | Cod sursa (job #849932) | Monitorul de evaluare | Cod sursa (job #998963) | Cod sursa (job #517746)
Cod sursa(job #517746)
#include <iostream>
#include<stdio.h>
using namespace std;
const long int lg=100000;
int v[lg],L[lg],N,p,m;
void read()
{
scanf("%d",&N);
for(int i=1; i<=N; i++)
scanf("%d",&v[i]);
}
void solve()
{
int i,j,mx;
L[N]=1;
for(i=N-1;i>0;i--)
{
mx=0;
for(j=i+1;j<=N;j++)
if(v[j]>v[i] && L[j]>mx) mx=L[j];
L[i]=mx+1;
if(L[i]>m) p=i,m=L[i];
}
}
void out()
{
printf("%d\n",m);
printf("%d ",v[p]);
for(int i=p+1;i<=N;i++)
if(L[i]==m-1 && v[p]<v[i]) {printf("%d ",v[i]);m--;}
}
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
read();
solve();
out();
return 0;
}