Cod sursa(job #2508678)

Utilizator mariamirabella2Bucur-Sabau Maria-Mirabela mariamirabella2 Data 12 decembrie 2019 18:25:32
Problema Subsir crescator maximal Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.89 kb
#include <fstream>
#include <algorithm>

using namespace std;

ifstream cin("drept.in");
ofstream cout("drept.out");

long long b,n,k,d[100005],maxi,l,index[100005];
pair<long long,long long>v[100005];

int caut(long long x,long long sf)
{
    long long in=1,r=0,mij;
    while(in<=sf){
        mij=(in+sf)/2;
        if(v[index[mij]].second<v[x].second){
            in=mij+1;
            if(v[index[mij]].first!=v[x].first)
                r=mij;
        }
        else{
            sf=mij-1;
        }
    }
    return r;
}


int main()
{
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>v[i].first>>v[i].second;
    }
    sort(v+1,v+n+1);
    for(int i=1;i<=n;i++){
        b=caut(i,l);
        d[i]=b+1;
        if(b+1>l)
            l=b+1;
        index[b+1]=i;
        if(d[i]>maxi){
            maxi=d[i];
        }
    }
    cout<<maxi;
    return 0;
}