Cod sursa(job #3318814)

Utilizator vladneaguVladneagu vladneagu Data 29 octombrie 2025 09:14:50
Problema Subsir crescator maximal Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>
#include <vector>
#include <algorithm>
#include <map>
using namespace std;
const int maxn=1e5+5;
int n;
int v[maxn];
map<int,int> last;
int main()
{
    ifstream cin("scmax.in");
    ofstream cout("scmax.out");
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>v[i];
    }
    vector<int> lis;
    lis.push_back(0);
    for(int i=1;i<=n;i++){
        auto it=lower_bound(lis.begin(),lis.end(),v[i]);
        if(it==lis.end()){
            lis.push_back(v[i]);
        }else *it=v[i];
        it=prev(it);
        last[v[i]]=*it;
    }
    cout<<lis.size()-1<<'\n';
    int act=lis[lis.size()-1];
    vector<int> rsp;
    while(act!=0){
        rsp.push_back(act);
        act=last[act];
    }
    reverse(rsp.begin(),rsp.end());
    for(auto elem:rsp)cout<<elem<<" ";
    return 0;
}