Cod sursa(job #3217600)

Utilizator bogdann31Nicolaev Bogdan bogdann31 Data 23 martie 2024 19:29:46
Problema Subsir crescator maximal Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.98 kb
#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();
}