Cod sursa(job #3239431)

Utilizator filipinezulBrain Crash filipinezul Data 5 august 2024 16:21:06
Problema Subsir crescator maximal Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.27 kb
#include <bits/stdc++.h>
using namespace std;

class Task {
 public:
    void solve() {
        read_input();
        get_result();
        print_output();
    }

 private:
    int n;
    vector<int32_t> v;
    vector<int32_t> scmax;

    void read_input() {
        ifstream fin("scmax.in");
        fin.tie(0);
        
        fin >> n;
        v.resize(n);

        for (int i = 0; i < n; i++) {
            fin >> v[i];
        }

        fin.close();
    }

    void get_result() {
        scmax.push_back(v[0]);

        for (int i = 1; i < n; i++) {
            if (scmax.back() < v[i]) {
                scmax.push_back(v[i]);
                continue;
            }

            auto it = lower_bound(scmax.begin(), scmax.end(), v[i]);
            int p = it - scmax.begin();

            scmax[p] = v[i];
        }
    }

    void print_output() {
        ofstream fout("scmax.out");
        fout.tie(0);

        fout << scmax.size() << "\n";

        for (size_t i = 0; i < scmax.size(); i++) {
            fout << scmax[i] << " ";
        }

        fout.close();
    }
};

int main() {
    ios::sync_with_stdio(false);
    auto* task = new (nothrow) Task();

    if (!task) {
        cerr << "new failed\n";
        return -1;
    }

    task->solve();
    delete task;

    return 0;
}