Pagini recente » Cod sursa (job #2567432) | Cod sursa (job #3003577) | Cod sursa (job #2547708) | Cod sursa (job #2785954) | Cod sursa (job #2532478)
#include <iostream>
#include <fstream>
#define NMAX 10000
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
void read(int &n,int *v)
{
fin>>n;
for(int i=0;i<n;++i)
fin>>v[i];
}
int main()
{
int n,m,a[NMAX],b[NMAX];
read(n,a);
//read(m,b);
int nr=0;
int best[NMAX]={0},prec[NMAX];
for(int i=0;i<n;++i)
{
best[i]=1;
prec[i]=i;
for(int j=0;j<i;++j)
if(a[i]>a[j])
if(1+best[j]>best[i])
{
best[i]=1+best[j];
prec[i]=j;
}
}
int res=0,last=0;
for(int i=0;i<n;++i)
if(best[i]>res)
{
res=best[i];
last=i;
}
int k=res;
do
{
b[--k]=a[last];
last=prec[last];
}while(last!=prec[last]);
b[--k]=a[last];
fout<<res<<'\n';
for(int i=0;i<res;++i)
fout<<b[i]<<' ';
return 0;
}