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# (judge verdict: Accepted)

using System;
using System.Collections.Generic;
using System.Linq;

namespace I
{
    class Program
    {
        static void Main(string[] args)
        {
            int n = int.Parse(Console.ReadLine());
            int[,] inp = new int[n, 2];
            HashSet<int> hash = new HashSet<int>();
            for (int i = 0; i < n; i++)
            {
                int[] x = Console.ReadLine().Split().Select(int.Parse).ToArray();
                hash.Add(x[0]); hash.Add(x[1]);
                inp[i, 0] = x[0]; inp[i, 1] = x[1];
            }
            int[] arr = hash.ToArray();
            Array.Sort(arr);
            int[] sum = new int[arr.Length + 1];
            for (int i = 0; i < n; i++)
            {
                sum[Array.BinarySearch(arr, inp[i, 0])]++;
                sum[Array.BinarySearch(arr, inp[i, 1]) + 1]--;
            }
            for (int i = 1; i < sum.Length; i++)
            {
                sum[i] += sum[i - 1];
            }
            Console.WriteLine(sum.Max());
        }
    }
}