Cod sursa(job #2565410)

Utilizator NicolaalexandraNicola Alexandra Mihaela Nicolaalexandra Data 2 martie 2020 14:10:39
Problema Subsir crescator maximal Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.76 kb
#include <bits/stdc++.h>
#define DIM 100010
using namespace std;

ifstream fin ("scmax.in");
ofstream fout ("scmax.out");
int v[DIM],w[DIM],d[DIM],t[DIM];
int n,i,k,el;
int main (){

    fin>>n;
    for (i=1;i<=n;i++)
        fin>>v[i];

    d[1] = 1;
    k = 1;
    for (i=2;i<=n;i++){
        int st = 1, dr = k;
        while (st <= dr){
            int mid = (st+dr)>>1;
            if (v[d[mid]] < v[i])
                st = mid+1;
            else dr = mid-1;
        }

        if (st == k+1)
            k++;

        t[i] = d[st-1];
        d[st] = i;

    }
    fout<<k<<"\n";
    int x = d[k];
    while (x){
        w[++el] = v[x];
        x = t[x];
    }

    for (i=el;i;i--)
        fout<<w[i]<<" ";



    return 0;
}