Cod sursa(job #2538955)

Utilizator mihnea.anghelMihnea Anghel mihnea.anghel Data 5 februarie 2020 13:51:41
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[100009], d[100009], t[100009];
int n, m, i, st, dr, mid, k;

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

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)/2;
            if ( v[i] <= v[d[mid]] )
                dr = mid-1;
            else st = mid+1;
        }
        if ( st > k ) d[++k] = i;
        else d[st] = i;
        t[i] = d[st-1];
    }
    g<<k<<"\n";
    afis (d[k]);
    return 0;
}