Cod sursa(job #810157)

Utilizator Al3ks1002Alex Cociorva Al3ks1002 Data 9 noiembrie 2012 19:23:28
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.64 kb
#include<cstdio>
#include<vector>
#include<algorithm>
using namespace std;
int n,j,k,i,oo=(1<<31)-1;
int I[100001],V[100001],B[100001],x[100001];
int main()
{
    freopen("scmax.in","r",stdin);
    freopen("scmax.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
        V[i]=oo;
        scanf("%d",&x[i]);
        j=lower_bound(V,V+i,x[i])-V;
        if(x[i]<V[j]) {V[j]=x[i];I[j]=i;B[i]=I[j-1];}

    }
    for(i=n;i>=1;i--)
        if(V[i]<oo) break;
    printf("%d\n",i);
    for(j=i,k=I[i];j>=0;j--)
    {
        I[j]=k;
        k=B[k];
    }
    for(j=1;j<=i;j++) printf("%d ",x[I[j]]);
    return 0;
}