Cod sursa(job #1991035)

Utilizator BeatriceBBeatrice Roxana BeatriceB Data 14 iunie 2017 18:42:44
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.77 kb
#include <iostream>
#include <fstream>
using namespace std;
#define in "scmax.in"
#define out "scmax.out"
#define N 100005
ifstream f(in);
ofstream g(out);
long a[N], p[N], v[N], b[N],n, i, j, L;

void afisare(int I)
{
    if(I==0)
        return;
    afisare(b[I]);
    g<<a[I]<<' ';

}

int main ()
{
    f>>n;
    for(i=1; i<=n; i++)
    {
        f>>a[i];
        int lo=0,hi=L+1,mi;
        while(hi-lo>1)
        {
            mi=(lo+hi)/2;
            if(v[mi]<a[i])
                lo=mi;
            else
                hi=mi;
        }
        if(hi==L+1)
            L++;
        v[hi]=a[i];
        p[hi]=i;
        b[i]=p[lo];
    }

    g<<L<<'\n';
    afisare(p[L]);
    g<<'\n';

    f.close();
    g.close();
    return 0;
}