Pagini recente » Cod sursa (job #1996009) | Cod sursa (job #2005277) | Statistici Selaru Alexandru (selaru) | Cod sursa (job #2320879) | Cod sursa (job #2002191)
#include <bits/stdc++.h>
#define dim 100001
//#define dim 11 //0010
using namespace std;
int n,A[dim],p[dim],poz,M[7],k;
int i=1;
int mij,st,dr;
void afisare(int q){
if (p[q])
afisare(p[q]);
cout<<A[q]<<" ";
}
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
cin>>n;
for ( i=1; i<=n; i++)
cin>>A[i];
M[0]=0;
k=0;
for ( i=1; i<=n; i++)
{
st=1;
dr=k;
while (st<=dr)
{
mij=(st+dr)/2;
if (A[i]>A[M[mij]])
st=mij+1;
else
dr=mij-1;
}
p[i]=M[st-1];
M[st]=i;
if (st>k)
{
k=st; //k=nivelul maxim
poz=i; //tine minte pozitia celui mai puternic el.
}
}
cout<<k<<"\n";
afisare(poz);
return 0;
}