Cod sursa(job #1955398)

Utilizator FlorinHajaFlorin Gabriel Haja FlorinHaja Data 5 aprilie 2017 22:34:50
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>

using namespace std;

ifstream f("scmax.in");
ofstream g("scmax.out");

int n, i, j, a[100005], poz[100005], b[100005], k, sol[100005];

int main() {
    f >> n;
    for (i = 1; i <= n; i++) {
        f >> a[i];
         int st = 1, dr = k, mij;
        while (st <= dr) {
            mij = (st+dr)/2;
            if (a[i] <= b[mij])
                dr = mij-1;
            else st = mij+1;
        }
        b[st] = a[i];
        poz[i] = st;
        if (st == k+1) k++;
    }
    g << k << '\n';
    for (i = n; i >= 1&&k; i--)
        if (poz[i]==k)
            sol[++j] = a[i], k--;
    while (j) g << sol[j--] << ' ';
    return 0;
}