Cod sursa(job #2760473)

Utilizator ravixBobei Razvan-Marian ravix Data 26 iunie 2021 20:04:10
Problema Subsir crescator maximal Scor 5
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>

using namespace std;

ifstream fin("scmax.in");
ofstream fout("scmax.out");

int v[100005] , N , a[100005] , k;

int QuickSearch(int i , int j , int number) {

   if(i <= j) {
      int mid = (i+j)/2 ;
      if((a[mid] < number && (a[mid+1] > number || a[mid+1]==0)))
         return mid ;
      else
      if(a[mid] > number)
         return QuickSearch(i,mid-1,number);
      else
         return QuickSearch(mid+1,j,number);

   }
   return -1 ;
}
int main()
{  fin >> N ;
   for(int i = 1 ; i <= N ; i++)
       fin >> v[i];
   a[1] = v[1] ;
   k = 1 ;
   for(int i = 2 ; i <= N ; i++) {
       int p = QuickSearch(1,k,v[i]) ;
       if(p > 0) {
          if(a[p+1] == 0)
             a[p+1] = v[i];
          else
             a[p+1] = min(a[p],v[i]);
          if(p+1 > k)
             k = p + 1;
       }
       else
          a[1] = min(a[1],v[i]) ;
   }
   fout << k ;

    return 0;
}