Cod sursa(job #1885980)

Utilizator Marius7122FMI Ciltea Marian Marius7122 Data 20 februarie 2017 16:19:23
Problema Subsir crescator maximal Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.68 kb
#include <stdio.h>
#define N 100005

int n,i,m;
int v[N],l[N],pos[N];

void bs(int x)
{
    if(x>l[m])
        l[++m]=x;
    else
    {
        int step=1<<17,s=0;
        while(step)
        {
            if(s+step<=m && l[s+step]<x)
                s+=step;
            step/=2;
        }
        l[s+1]=x;
    }

    //printf("\n\n %d: \n",x);
    //for(int i=1;i<=m;i++)
        //printf("%d ",l[i]);
}

int main()
{
    FILE *f1,*f2;
    f1=fopen("scmax.in","r");
    f2=fopen("scmax.out","w");

    fscanf(f1,"%d",&n);
    for(i=1;i<=n;i++)
    {
        fscanf(f1,"%d",&v[i]);
        bs(v[i]);
    }

    fprintf(f2,"%d",m);

    return 0;
}