Cod sursa(job #2335367)

Utilizator ajeccAjechiloae Eugen ajecc Data 3 februarie 2019 22:57:55
Problema Subsir crescator maximal Scor 90
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.83 kb
#include <bits/stdc++.h>


int main() {
    std::ifstream fin("scmax.in");
    std::ofstream fout("scmax.out");
    std::vector<int> lis;
    std::vector<int> init_vector, ans_contribution; 
    int n;
    fin >> n;
    for(int _ = 1; _ <= n; _++) {
        int x;
        fin >> x;
        auto it = std::lower_bound(lis.begin(), lis.end(), x);
        if(it == lis.end())
            lis.push_back(x);
        else *it = x;

        init_vector.push_back(x);
        ans_contribution.push_back(it - lis.begin());
    }
    int ans = lis.size();
    lis.clear();

    for(int i = n - 1; i >= 0; i--) {
        if(ans_contribution[i] == ans - 1) {
            lis.push_back(init_vector[i]);
            ans--;
        } 
    }

    std::reverse(lis.begin(), lis.end());
    fout << lis.size() << '\n';
    for(auto i: lis) fout << i << ' ';
}