Cod sursa(job #2449296)

Utilizator petrisorvmyVamanu Petru Gabriel petrisorvmy Data 19 august 2019 10:42:37
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.72 kb
#include <fstream>
#define NMAX 100005
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");

int n, v[NMAX], pd[NMAX], t[NMAX];
void afis(int x)
{
    if(t[x])
        afis(t[x]);
    g << v[x] << ' ';
}
int main()
{
    f >> n;
    for(int i = 1; i <= n; ++i)
        f >> v[i];
    int k = 1; pd[k] = 1;
    for(int i = 2; i <= n; ++i)
    {
        int st = 1, dr = k, m = 0;
        while(st <= dr)
        {
            m = (st + dr) / 2;
            if(v[pd[m]] < v[i]) st = m + 1;
            else dr = m - 1;
        }
        if(st > k) k++;
        pd[st] = i;
        t[i] = pd[st - 1];
    }
    g << k << '\n';
    afis(pd[k]);
    f.close();
    g.close();
    return 0;
}