Problem:
I: 破壊 (Ravage)

サンタクロースは、街のイルミネーションに引っかかり、壊した。

イルミネーションにはN個の電球があり、$i$ 番目の電球は電圧が $A_i$ 以上 $B_i$ 以下のときにしか付かなくなってしまった。

電圧はイルミネーションのどこでも同じにする必要がある。

電圧を調節することで、最大いくつの電球を同時に光らせることができるか求めよ。

入力

1 行目には整数 $N$ が与えられる。

続く $N$ 行のうち $i$ 行目には $A_i, B_i$ が空白区切りで与えられる。

出力

同時に光らせることができる電球の個数の最大値を出力せよ。

制約

$N$ は $1$ 以上 $100 \ 000$ 以下の整数

$A_1, A_2, A_3, \dots, A_N$ は $1$ 以上 $1 \ 000 \ 000 \ 000$ 以下の整数

$B_1, B_2, B_3, \dots, B_N$ は $1$ 以上 $1 \ 000 \ 000 \ 000$ 以下の整数

すべての電球 $i$ について、$A_i \leq B_i$ を満たす

入力例1

4
1 4
3 6
2 7
5 8

出力例1

3

電圧が $5$ や $3.14$ のときに $3$ つの電球がつきます。

入力例2

2
1 2
2 3

出力例2

2

Solution in C++14 (judge verdict: Accepted)

#include <bits/stdc++.h>
#define all(vec) vec.begin(),vec.end()
using namespace std;
using ll=long long;
using P=pair<ll,ll>;
const ll INF=1LL<<30;
const ll LINF=1LL<<61;
const double eps=1e-9;
const ll MOD=1e9+7;
int main(){
    int n;cin>>n;
    vector<ll> a(n),b(n);
    vector<ll> v;
    for(int i=0;i<n;i++){
        cin>>a[i]>>b[i];
        v.push_back(a[i]);
        v.push_back(b[i]);
    }
    sort(all(v));
    v.erase(unique(all(v)),v.end());
    map<ll,ll> mp;
    for(int i=0;i<v.size();i++){
        mp[v[i]]=i;
    }
    vector<ll> sum(v.size()+10);
    for(int i=0;i<n;i++){
        sum[mp[a[i]]]++;
        sum[mp[b[i]]+1]--;
    }
    ll ans=0;
    for(int i=1;i<=v.size();i++){
        sum[i]+=sum[i-1];
    }
    for(int i=0;i<=v.size();i++){
        ans=max(ans,sum[i]);
    }
    cout<<ans<<endl;
}