Cod sursa(job #611834)

Utilizator Luncasu_VictorVictor Luncasu Luncasu_Victor Data 3 septembrie 2011 18:30:40
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <cstdio>
#define MAX 100001
int v[MAX],l[MAX],c[MAX],x=0,i;

int insert(int lf,int rt){
    int m;
    m=(lf+rt)/2;
    if(lf==rt){
        c[rt]=v[i];
        if(rt>x)x=rt;
        l[i]=rt;
    } else
    if(v[i]>c[m])insert(m+1,rt);else
                     insert(lf,m);
}

void print(int x,int n){
    int i;
    for(i=n;i>0;i--)
    if(l[i]==x){
        print(x-1,i-1);
        printf("%d ",v[i]);
        return; };
}

int main(){
    int n;
    freopen("scmax.in","r",stdin);
    freopen("scmax.out","w",stdout);
    scanf("%d",&n);
    for(i=1;i<=n;i++)scanf("%d",&v[i]);
    for(i=1;i<=n;i++)insert(1,x+1);
    printf("%d\n",x);
    print(x,n);
}