Pagini recente » Cod sursa (job #2556927) | Cod sursa (job #1477382) | Cod sursa (job #1818369) | Cod sursa (job #2979390) | Cod sursa (job #1986825)
#include <bits/stdc++.h>
#define dim 100001 //0010
using namespace std;
int n,A[dim],p[dim],poz,M[dim],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;
//2 7 -20 -6 22 -12
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;
poz=i;
}
}
cout<<k<<"\n";
afisare(poz);
return 0;
}