Cod sursa(job #3212813)

Utilizator AswVwsACamburu Luca AswVwsA Data 12 martie 2024 10:37:36
Problema Subsir crescator maximal Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <fstream>
#include <vector>
#define ll long long
using namespace std;

const int NMAX = 100000;

int a[NMAX + 1];
int sol[NMAX + 1];

signed main()
{
    ifstream cin("scmax.in");
    ofstream cout("scmax.out");
    int n, i;
    cin >> n;
    for (i = 1; i <= n; i++)
        cin >> a[i];
    int dim = 0;
    for (i = 1; i <= n; i++)
    {
        int st = 1, dr = dim, poz = 0;
        while (st <= dr)
        {
            int med = ((st + dr) >> 1);
            if (sol[med] < a[i])
            {
                poz = med;
                st = med + 1;
            }
            else
                dr = med - 1;
        }
        if (poz + 1 > dim)
            sol[++dim] = a[i];
        else
            sol[poz + 1] = a[i];
    }
    cout << dim << "\n";
    for (i = 1; i <= dim; i++)
        cout << sol[i] << " ";
}