Cod sursa(job #1290868)

Utilizator marian98Horodnic Gheorghe Marian marian98 Data 11 decembrie 2014 21:37:44
Problema Subsir crescator maximal Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 0.7 kb
#include<fstream>
#include<iostream>
const long INF=99999;
const long NMAX=100005;
using namespace std;

int n,sol,A[NMAX],T[NMAX],D[NMAX];

int main() {
    int i, j, k;
    ifstream f("scmax.in");
    ofstream f1("scmax.out");
    f>>n;
    for(i = 1; i <= n; i++) {
        f>>A[i];
        T[i] = INF;
        j = lower_bound(T + 1, T + i + 1, A[i]) - T;
        T[j] = A[i];
        D[i] = j;
        sol = max(sol, D[i]);
    }

    f1<<sol<<"\n";

    for(i = n, k = sol, j = INF; i; i--)
        if(D[i] == k && A[i] < j) {
            T[k] = A[i];
            j = A[i];
            k--;
        }

    for(i = 1; i <= sol; i++)
        f1<<T[i]<<" ";

    return 0;
}