Cod sursa(job #3202898)

Utilizator EdyIordacheIordache Eduard EdyIordache Data 12 februarie 2024 16:16:07
Problema Subsir crescator maximal Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.9 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <vector>
#include <cstring>
#include <stack>

using namespace std;

#define NMAX 100001

ifstream fin("scmax.in");
ofstream fout("scmax.out");

stack<int> v[NMAX + 1];
vector<int> sol;

int main() {
    int n, x;
    fin>>n;

    int p = 0;
    for (int i = 1; i <= n; i++) {
        fin>>x;
        int k = 0;
        while (!v[k].empty() && v[k].top() >= x) k++;

        v[k].push(x);
        if (k > p) p = k;
    }

    int mx = 0, imx;
    for (int i = 0; i <= p; i++) {
        if (!v[i].empty()) {
            if (v[i].size() > mx) {
                mx = v[i].size();
                imx = i;
            }
        }

    }

    fout<<mx<<endl;
    while (!v[imx].empty()) {
        x = v[imx].top();
        sol.push_back(x);
        v[imx].pop();
    }

    sort(sol.begin(), sol.end());
    for (auto i:sol) fout<<i<<" ";

    return 0;
}