Pagini recente » Cod sursa (job #1398736) | Cod sursa (job #808330) | Cod sursa (job #2889003) | Cod sursa (job #1047682) | Cod sursa (job #2210470)
#include<bits/stdc++.h>
#define ll long long
#define sz size
#define pb push_back
#define er erase
#define in insert
#define fr first
#define sc second
#define mp make_pair
#define pi pair
#define _ ios_base::sync_with_stdio(false);cin.tie(0);cerr.tie(0);cout.tie(0);
#define rc(s) return cout<<s,0
using namespace std;
int n,a[100005],p[100005],l[100005];
vector<int>ans;
int binsearch(int l,int r,int y){
}
void afis(int y){
if(p[y]>0) afis(p[y]);
cout<<a[y]<<' ';
}
signed main(){ _
// freopen("scmax.in","r",stdin);
// freopen("scmax.out","w",stdout);
cin >> n;
for(int i=1;i<=n;i++) cin >> a[i];
ans.pb(a[1]);
p[1]=0;
l[0]=1;
for(int i=2;i<=n;i++){
if(a[i]>ans[ans.size()-1]){ p[i] = l[ans.size()-1];
l[ans.size()]=i; ans.pb(a[i]); continue;}
int ho=binsearch(0,ans.size()-1,a[i]);
ans[ho+1]=a[i];
p[i]=l[ho+1];
l[ho+1]=i;
}
cout<<ans.size()<<endl;
afis(l[ans.size()-1]);
}