Pagini recente » Cod sursa (job #2321623) | Cod sursa (job #2822194) | Cod sursa (job #2981703) | Cod sursa (job #1965655) | Cod sursa (job #1403861)
#include <iostream>
#include <fstream>
#define NMAX 100004
using namespace std;
int A[NMAX],Lmax[NMAX];
int s[NMAX],urm[NMAX];
int l,maxx,n,i,j,maxpoz,maxt=0;
/*int cautarebinara()
{
int k,step=1;
for(;step<i;step<<=1);
for(k=1;step;step>>=1)
if(k+step<=i && A[k+step]<A[i])
k+=step;
if(k==1 && A[k]>=A[i]) return 0;
return k;
}*/
int main()
{
ifstream f("scmax.in");
ofstream g("scmax.out");
f>>n;
for(i=1;i<=n;i++)
urm[i]=-1;
for(i=1;i<=n;i++)
{
f>>A[i];
l=1;maxx=1;
for(j=1;j<i;j++)
if(A[j]<A[i] && Lmax[j]+1>maxx)
{
maxx=Lmax[j]+1;
l=Lmax[j]+1;
urm[i]=j;
}
Lmax[i]=l;
if(Lmax[i]>maxt)
{
maxt=Lmax[i];
maxpoz=i;
}
}
g<<maxt<<"\n";
int val=0;
for(i=maxpoz;i!=-1;i=urm[i]) s[val++]=A[i];
for(i=val-1;i>=0;i--)
g<<s[i]<<" ";
}