Cod sursa(job #2161846)

Utilizator Anastasia11Susciuc Anastasia Anastasia11 Data 11 martie 2018 21:16:35
Problema Subsir crescator maximal Scor 55
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <fstream>

using namespace std;

ifstream f("scmax.in");
ofstream g("scmax.out");
int v[100003],t[100003],d[100003],sol[10003],n,i,j,st,dr,k,mj;

int main()
{ f >> n ;
    for ( i = 1 ; i <= n ;i ++ )
     f >> v[i];
    k = 1;
    d[1] = 1 ;
   for( i = 2 ; i <= n ; i ++ )
    {st=1;
     dr=k;
      while( st <= dr )
       {
           mj = (st+dr)/2 ;
         if ( v[d[mj]] < v[i] )
          st = mj+1;
         else
           dr = mj-1;
       }
   if ( st > k )
     k ++ ;
   d[st] = i ;
   t[i] = d[st-1] ;
   }
    g << k << '\n' ;
    int i = d[k] ;
   while ( i != 0 )
   {
       sol [++j] = i ;
       i=t[i];
   }
   for ( i = k ; i >= 1 ; i -- )
      g << sol[i] << " " ;
    /*read();
    sclm();
    print();*/

   return 0;
}