Cod sursa(job #2605396)

Utilizator matthriscuMatt . matthriscu Data 24 aprilie 2020 20:46:03
Problema Subsir crescator maximal Scor 10
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <cstdio>
using namespace std;

int main() {
    int n, i, j, x, l = 0, v[100005], lis[100005] = {0}, st, dr, m;
    freopen("scmax.in", "r", stdin);
    freopen("scmax.out", "w", stdout);
    scanf("%d", &n);
    for(i = 1; i <= n; ++i) {
        scanf("%d", &x);
        if(x > lis[l])
            lis[++l] = x;
        else {
            st = 1, dr = l;
            while(st < dr) {
                m = (st + dr) / 2;
                if(lis[m] > x)
                    dr = m - 1;
                else
                    st = m + 1;
            }
            lis[st] = x;
        }
    }
    printf("%d\n", l);
    for(i = 1; i <= l; ++i)
        printf("%d ", lis[i]);
}