Pagini recente » Cod sursa (job #384202) | Cod sursa (job #1694570) | Cod sursa (job #1269468) | Cod sursa (job #2663307) | Cod sursa (job #3217600)
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define all(v) v.begin(), v.end()
ll ceil2(ll a, ll b) {
return (a + b - 1) / b;
}
// #include <ext/pb_ds/assoc_container.hpp>
// #include <ext/pb_ds/tree_policy.hpp>
// using namespace __gnu_pbds;
// #define ordered_set tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update>
void solve(){
ll n;cin>>n;
vector<ll> v;
for(int i=0; i<n; i++){
ll x;cin>>x;v.push_back(x);
}
set<ll> s;
s.insert(v[0]);
for(int i=1; i<n; i++){
if(v[i]>*s.rbegin()){
s.insert(v[i]);
}
else{
set<ll>::iterator it=s.lower_bound(v[i]);
s.erase(it);s.insert(v[i]);
}
}
cout<<s.size()<<"\n";
for(auto x=s.begin(); x!=s.end(); x++){
cout<<*x<<" ";
}
}
int main(){
ios_base::sync_with_stdio(false); cin.tie(NULL);
// ll t;cin>>t;while(t--){solve();cout<<endl;}
solve();
}