Cod sursa(job #2391131)

Utilizator Constantin.Dragancea Constantin Constantin. Data 28 martie 2019 18:02:17
Problema Subsir crescator maximal Scor 65
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.62 kb
#include <bits/stdc++.h>
using namespace std;

#define N 100005
int n, M[N], k;

int bs(int val){
    int st = 1, dr = k;
    while (st <= dr){
        int mid = (st + dr) >> 1;
        if (M[mid] < val) st = mid + 1;
        else dr = mid - 1;
    }
    return st;
}

int main(){
    ifstream cin ("scmax.in");
    ofstream cout ("scmax.out");
    cin >> n;
    for (int i=1, x; i<=n; i++){
        cin >> x;
        int idx = bs(x);
        if (idx > k) k = idx, M[k] = x;
        else M[idx] = min(M[idx], x);
    }
    cout << k << '\n';
    for (int i=1; i<=k; i++) cout << M[i] << ' ';
    return 0;
}