Cod sursa(job #2206083)

Utilizator AvramDanielAvram Daniel AvramDaniel Data 21 mai 2018 00:12:50
Problema Subsir crescator maximal Scor 5
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <bits/stdc++.h>
using namespace std;
int a[100010],b[100010],lmax,n;
int ValoareIntermidiara(int l, int r, int cheie)
{
    while(r>l+1)
    {
        int m=(r+l)/2;
        if(a[m]>=cheie)
            r=m;
        else l=m;
    }
    return r;
}

int main()
{
    ifstream cin("scmax.in");
    ofstream cout("scmax.out");
    cin>>n;
    for(int i=0;i<n;i++)cin>>a[i];
    b[0]=a[0];

    for(int i=1;i<n;i++)
    {
       if(a[i]<b[0]) b[0]=a[i];
       else
       if(a[i]>b[lmax])b[++lmax]=a[i];
       else
       b[ValoareIntermidiara(-1,lmax,a[i])]=a[i];

    }
    cout<<lmax+1;

}