Cod sursa(job #1083825)

Utilizator CostanMiriamCostan Miriam CostanMiriam Data 16 ianuarie 2014 14:24:43
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <fstream>
using namespace std;
ifstream fin ("scmax.in");
ofstream fout ("scmax.out");

int x[100010], v[100010],n,p,u,mij,k,i,t[100010],j,r[100010];

int main () {

    fin>>n;
    fin>>v[1];
    x[0]=-1;
    x[++k]=1;
    t[1]=-1;
    for (i=2;i<=n;i++) {

        fin>>v[i];

        p=1;u=k;

        while (p<=u) {
            mij=(p+u)/2;
            if (v[x[mij]]<v[i])
                p=mij+1;
            else
                u=mij-1;
        }
        x[p]=i;
        t[i]=x[p-1];
        if (p>k)
            k++;

    }

    fout<<k<<"\n";
    u=x[k];

    while (u!=-1){
        r[++j]=v[u];
        u=t[u];
    }


    for (i=k;i>=1;i--)
        fout<<r[i]<<" ";

    return 0;
}