Cod sursa(job #863468)

Utilizator alex45meOlaru Alex alex45me Data 23 ianuarie 2013 20:39:50
Problema Subsir crescator maximal Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <iostream>
#include <stdio.h>

using namespace std;


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

 int q[100005],a[100005],v[100005],mx,mx1,i,j,ok,n,p;

int caut(int x)
{
   int p, u, m,mx;
   p = 1; u = q[0]; mx=0;
      while (p <= u)
   {
        m = (p+u)/2;
         if (q[m]<x) {
           if (m>mx) mx=m;
            p=m+1;
            }
       else  u=m-1;}
            return mx;

}




int main()
{
      fscanf(f,"%d",&n);
      for (i=1;i<=n;i++)
           fscanf(f,"%d",&v[i]);
      q[1]=v[1];
      q[0]=1;
      a[1]=1;
      for (i=2;i<=n;i++)
      {
          p=caut(v[i]);
          if (p==q[0])
          {
              q[0]++;
              q[p+1]=v[i];
            }
         else

         {
             q[p+1]=v[i];

         }
          a[i]=p+1;
          if (a[i]>mx) mx=a[i];


      }

     fprintf(g,"%d",mx);

     fclose(g);
	return 0;
}