Cod sursa(job #863502)

Utilizator lehman97Dimulescu David lehman97 Data 23 ianuarie 2013 21:10:45
Problema Subsir crescator maximal Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.98 kb
#include <iostream>
#include <stdio.h>

using namespace std;

FILE *f=fopen("scmax.in","r");
FILE *g=fopen("scmax.out","w");

int mxx,nr,i,n,a[100000],c[100000],mx,k,j,s[100000];

/*void drum(int k)
{
    i++;
    fprintf(g,"%d ",a[k]);
    if(i<mxx) drum(t[k]);
}
*/
int cauta(int nr)
{
   int p,m,u,mx;
   mx=0;
   p=1;
   u=c[0];
   while (p<=u)
   {
       m=(p+u)/2;
       if(c[m]<nr)
       {
           if(m>mx)mx=m;
           p=m+1;
       } else u=m-1;

   }
   return mx;

}



int main()
{
    mxx=0;
    fscanf(f,"%d",&n);
    for(i=1;i<=n;i++)
        fscanf(f,"%d",&a[i]);
    c[0]=1;
    c[1]=a[1];
    //a[1]=1;

    for (i=2;i<=n;i++)
    {
        nr=cauta(a[i]);
        if(nr==c[0])
          {
              c[0]++;
              c[nr+1]=a[i];
          } else  c[nr+1]=a[i];
        s[i]=nr+1;
        if (s[i]>mxx) mxx=s[i];
    }

    fprintf(g,"%d\n",mxx);
    i=0;
    //drum(k);
    fclose(g);
    return 0;
}