Cod sursa(job #3191663)

Utilizator vlad231Gheorghica Istrate David vlad231 Data 10 ianuarie 2024 12:22:55
Problema Subsir crescator maximal Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.78 kb
#include <bits/stdc++.h>
using namespace std;
int n,x;
int binary_search(vector<int>v,int x){
    int right=0,left=v.size(),mid;
    while(right<left){
        mid=(right+left)/2;
        if(v[mid]>x){
            left=mid-1;
        } else if(v[mid]<x)
            right=mid+1;
        else{
            return mid;
        }

    }
    return left;
}
int LIS_mine(vector<int>(v)){
    if(v.size()==1)
        return 1;
    vector <int>ans;
    ans.push_back(v[0]);
    for(int i=1;i<n;i++){
        if(v[i]>ans.back()){
    ans.push_back(v[i]);
        } else{
        ans[binary_search(v,v[i])+1]=v[i];
        }
    }
    return ans.size();
}
int main() {
    cin>>n;
    vector <int>v;
    for(int i=0;i<n;i++){
        cin>>x;
        v.push_back(x);
    }
cout<<LIS_mine(v);
    return 0;
}