Cod sursa(job #1985033)

Utilizator Constantin.Dragancea Constantin Constantin. Data 26 mai 2017 18:16:07
Problema Subsir crescator maximal Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <bits/stdc++.h>
using namespace std;

#define x first
#define y second
#define mp make_pair

int n,A[100010],D[100010],p[100010],m,poz,M[100010],k;

void afisare(int q){
    if (p[q]) afisare(p[q]);
    cout<<A[q]<<" ";
}

int main(){
    freopen("scmax.in","r",stdin);
    freopen("scmax.out","w",stdout);
    cin>>n;
    for (int i=1; i<=n; i++) cin>>A[i];
    M[0]=0; k=0;
    for (int i=1; i<=n; i++){
        int mid,st=1,dr=k;
        while (st<=dr){
            mid=(st+dr)/2;
            if (A[i]>A[M[mid]]) st=mid+1;
            else dr=mid-1;
        }
        M[st]=i;
        k=max(k,st);
    }
    cout<<k<<"\n";
    return 0;
}