Cod sursa(job #2416462)

Utilizator Briana_NeaguNeagu Briana Briana_Neagu Data 27 aprilie 2019 16:27:18
Problema Subsir crescator maximal Scor 50
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
//#include <iostream>
#define maxi 100005

using namespace std;

ifstream f ("scmax.in");
ofstream g("scmax.out");

int n,v[maxi];
int minim[maxi];/// minim[i] cel mai mic element care sfarseste un subsir cresc de lungime i


int k;


int bs(int x)
{
    int i=1,j=k;

    while (i<=j)
    {
        int m=(i+j)/2;

        if (minim[m]<x)
            {
             i=m+1;
            }
        else {
                j=m-1;
             }
    }
   return i;

}
int main()
{
    f>>n;
    for (int i=1;i<=n;i++)
        f>>v[i];
    minim[1]=v[1];
    k=1;

    for (int i=2;i<=n;i++)
    {
        if (v[i]>minim[k])
              k++,minim[k]=v[i];
        else
           minim[bs(v[i])]=v[i];


    }
    g<<k;


}