Cod sursa(job #2963564)

Utilizator LucaMuresanMuresan Luca Valentin LucaMuresan Data 11 ianuarie 2023 15:19:12
Problema Subsir crescator maximal Scor 5
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <bits/stdc++.h>

using namespace std;

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

int dp[100001];

int main()
{
    int n;
    in >> n;

    for (int i=0; i<n; i++)
        dp[i] = 1;

    vector<int>v(n);
    for (int &x : v)
        in >> x;


    for (int i=0; i<n; i++)
    {
        int pos = upper_bound(v.begin(), v.end(), v[i]) - v.begin();
        dp[pos] = max(dp[pos], dp[i] + 1);
    }

    int ans = 0;

    for (int i=0; i<n; i++)
        ans = max(ans, dp[i]);
    out << ans << '\n';

    int len = ans, val = 2e9+1;

    for (int i=n; i>0; i--)
    {
        if (v[i] < val && dp[i] == len)
        {
            out << v[i] << ' ';
            val = v[i], len--;
        }
    }

    return 0;
}