Cod sursa(job #2565404)

Utilizator mihnea.anghelMihnea Anghel mihnea.anghel Data 2 martie 2020 14:09:21
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.69 kb
#include <fstream>

using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int v[100100], t[100100], d[100100];
int n, i, st, dr, mid, k;

void afis ( int poz ){
    if ( t[poz] )
        afis( t[poz] );
    g<<v[poz]<<" ";
}

int main()
{
    f>>n;
    for ( i=1; i <= n; i++ )
        f>>v[i];
    d[++k] = 1;
    for ( i=2; i <= n; i++ ){
        st = 1; dr = k;
        while ( st <= dr ){
            mid = st+((dr-st)>>1);
            if ( v[d[mid]] >= v[i] )
                dr = mid-1;
            else st = mid+1;
        }
        if ( st > k ) k++;
        t[i] = d[st-1];
        d[st] = i;
    }
    g<<k<<"\n";
    afis(d[k]);
    return 0;
}