Cod sursa(job #2604997)

Utilizator MattiaMattia Iojica Mattia Data 24 aprilie 2020 11:01:56
Problema Subsir crescator maximal Scor 55
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <bits/stdc++.h>
#define NMAX 100005

using namespace std;

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

int v[NMAX], l[NMAX], k = 0;

int main()
{
    int n;

    f >> n;

    for(int i = 1; i <= n; i++)
        f >> v[i];


    l[++k] = v[1];

    for(int i = 2; i <= n; i++)
    {
        if(v[i] > l[k])
        {
            l[++k] = v[i];
        }
        else
        {
            int st = 1, dr = k;

            while(st < dr)
            {
                int mij = (st + dr) / 2;
                if(l[mij] > v[i])
                {
                    dr = mij;
                }
                else
                {
                    st = mij + 1;
                }
            }
            l[st] = v[i];
        }
    }

    g << k << '\n';

    for(int i = 1; i <= k; i++)
        g << l[i] << " ";


    return 0;
}