Cod sursa(job #2834756)

Utilizator mihhTURCU MIHNEA ALEXANDRU mihh Data 17 ianuarie 2022 17:01:48
Problema Subsir crescator maximal Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.88 kb
#include <bits/stdc++.h>
using namespace std;

int main(){
// #ifndef ONLINE_JUDGE
//     freopen("sclm2.in", "r", stdin);
//     freopen("sclm2.out", "w", stdout);
// #endif
//
    ifstream fin("scmax.in");
    ofstream fout("scmax.in");
    int n;
    fin>>n;
    vector<int> lis(1);
    fin>>lis[0];
    for(int i=2;i<=n;++i){
        auto cb=[](int x, vector<int> &a){
            int st=0, dr=a.size()-1;
            int ans=dr;
            while(st<=dr){
                int mij=(st+dr)/2;
                if(a[mij]==x) return mij;
                if(a[mij]>x){
                    ans=mij;
                    dr=mij-1;
                }else st=mij+1;
            }
            return ans;
        };
        int x; cin>>x;
        if(x>lis.back()) lis.push_back(x);
        else lis[cb(x,lis)]=x;
    }
    // for(int x:lis)
    //     cerr<<x<<" ";
    // cout<<"\n";
    fout<<lis.size();
}