Pagini recente » Cod sursa (job #2498132) | Cod sursa (job #2419369) | Cod sursa (job #420574) | Cod sursa (job #255307) | Cod sursa (job #1985047)
#include <bits/stdc++.h>
using namespace std;
int n,A[100010],p[100010],poz,M[100010],k;
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 (int i=1; i<=n; i++) cin>>A[i];
M[0]=0; k=0;
for (int i=1; i<=n; i++){
int mid,st=1,dr=k;
while (st<=dr){
mid=(st+dr)/2;
if (A[i]>A[M[mid]]) st=mid+1;
else dr=mid-1;
}
p[i]=M[st-1];
M[st]=i;
if (st>=k) k=st,poz=i;
}
cout<<k<<"\n";
afisare(poz);
return 0;
}