Cod sursa(job #874711)

Utilizator alexteStefanescu Alexandru Catalin alexte Data 9 februarie 2013 10:55:48
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include<iostream>
#include<fstream>
using namespace std;
int a[100001],i,j,b[100001],n,l,p,r,q,c[100001],k,x[100001];
int main()
{
    ifstream fin("scmax.in");
    ofstream fout("scmax.out");
    fin>>n;
    for(i=1;i<=n;++i)
        fin>>a[i];
    l=0;
    for(i=1;i<=n;++i)
    {
    p=1;
    r=l;
    while(p<=r)
    {
        q=p+(r-p)/2;
        if(a[i]<=a[b[q]])
            r=q-1;
        else p=q+1;
    }
    b[p]=i;
    if(p>i)
        l++;
    c[i]=0;
    if(p>1)
        c[i]=b[p-1];
    }
    k=0;
    for(i=b[l];i;i=c[i])
    {
        k++;
        x[k]=a[i];
    }
    for(i=k;i;--i)
        fout<<x[i]<<' ';
    fout.close();
    return 0;
}