Cod sursa(job #2972147)

Utilizator dobreraduDobre Radu Fabian dobreradu Data 28 ianuarie 2023 18:33:39
Problema Subsir crescator maximal Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
const int NMAX = 100001;
int v[NMAX], best[NMAX];
int cautbin( int st, int dr, int e){
    int ans = 0;
    while(st <= dr){
        int mid = (st + dr)/2;
        if( v[best[mid]] < e ){
            st = mid + 1;
            ans = mid;
        }
        else
            dr = mid-1;
    }
    return ans;
}
int main()
{
    int n, max_best = 0;
    in >> n;
    for( int i = 1 ; i <= n ; i++ ){
        in >> v[i];
        int poz = cautbin(1, max_best, v[i])+1;
        best[poz] = i;
        max_best = max( poz, max_best );
    }
    out << max_best << endl;
    for( int i = 1 ; i <= max_best ; i++ )
        out << v[best[i]] << " ";
    return 0;
}