Problem:
Range Count Query

数列a_1,a_2,..,a_Nが与えられます。

クエリでは、値がl以上r以下の項の個数を答えてください。

入力

N Q
a_1 a_2...a_N
l_1 r_1
l_2 r_2
:
l_q r_q

出力

ans_1
ans_2
:
ans_q

i行目には、i番目のクエリに対する答え、すなわちl_i \leq a_j \leq r_iなるjの個数を出力せよ。

制約

1 \leq N,Q \leq 10^5

1 \leq a_i \leq 10^9

1 \leq l_i \leq r_i \leq 10^9

入力例

6 3
8 6 9 1 2 1
2 8
1 7
3 5

出力例

3
4
0

Solution in Ruby (judge verdict: Accepted)

n, q = gets.chomp.split.map(&:to_i)
arr = gets.chomp.split.map(&:to_i)

h = Hash.new(0)
numbers = [0]
arr.each{|x|
    h[x] += 1
    numbers << x
}

arr2 = []
q.times{
    arr2 << gets.chomp.split.map(&:to_i)
    numbers << arr2.last[0]
    numbers << arr2.last[1]
}
numbers.uniq!
numbers.sort!

idx = {}
numbers.each_with_index{|x, i| idx[x] = i}

cum = Array.new(numbers.length, 0)
h.each{|k, v| cum[idx[k]] = v}
1.upto(cum.length - 1){|i| cum[i] += cum[i - 1]}

arr2.each{|l, r| puts cum[idx[r]] - cum[idx[l] - 1]}