Pagini recente » Cod sursa (job #1376267) | Cod sursa (job #3221611) | Cod sursa (job #3181072) | Cod sursa (job #3221711) | Cod sursa (job #2397479)
#include<bits/stdc++.h>
using namespace std;
long long int v[100005],d[100005],pre[100005],t[100005];
int main(){
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n,ma=1,st=0,dr,mij;
fin>>n;
for(int i=1;i<=n;i++){
fin>>v[i];
}
d[1]=1;
for(int i=2;i<=n;i++){
st=0;
dr=ma;
while(st<=dr){
mij=(st+dr)/2;
if(v[d[mij]]<v[i]){
st=mij+1;
}
else dr=mij-1;
}
d[st]=i;
pre[i]=d[st-1];
if(st>ma){
ma=st;
}
}
fout<<ma<<"\n";
int poz=d[ma];
for(int i=1;i<=ma;i++){
t[i]=poz;
poz=pre[poz];
}
for(int i=ma;i>=1;i--){
fout<<v[t[i]]<<" ";
}
return 0;
}