Cod sursa(job #3185396)

Utilizator Ruxandra009Ruxandra Vasilescu Ruxandra009 Data 18 decembrie 2023 20:01:15
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.96 kb
#include <fstream>

using namespace std;

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

const int nmax = 100005;
int n, min_val[nmax], a[nmax];
int len, dp[nmax], b[nmax];

int main()
{
    f >> n;
    for(int i = 1; i <= n; i ++)
        f >> a[i];

    for(int i = 1; i <= n; i ++)
    {
        int p = lower_bound(min_val + 1, min_val + len + 1, a[i]) - min_val;
        if(p > len)
            len ++;
        dp[i] = p;
        min_val[p] = a[i];
    }

    int p = len, x = 0;
    g << len << '\n';
    for(int i = n; i >= 1; i --)
        if(dp[i] == p)
            if(p == len)
            {
                b[p --] = a[i];
                x = a[i];
            }
            else
            {
                if(x > a[i])
                {
                    b[p --] = a[i];
                    x = a[i];
                }
            }

    for(int i = 1; i <= len; i ++)
        g << b[i] << " ";
    return 0;
}