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 C++14 (judge verdict: Accepted)

#include<iostream>
#include<algorithm>
#include<cmath>
#include<map>
#include<stdio.h>
#include<vector>
using namespace std;
#define rep(s,i,n) for(int i=s;i<n;i++)
#define c(n) cout<<n<<endl;
#define ic(n) int n;cin>>n;
#define sc(s) string s;cin>>s;
#define mod 1000000007
#define f first
#define s second
#define int long long
int a[114514],l[114514],r[114514],d[114514],e[114514];
signed main(){
	ic(n)
	ic(k)
	rep(0,i,n)cin>>a[i];
	rep(0,i,k){
		cin>>l[i];
		cin>>r[i];
	}	
	sort(a,a+n);
	int *pos;
	rep(0,i,k){
		pos=lower_bound(a,a+n,l[i]);
		d[i]=distance(a,pos);
		pos=upper_bound(a,a+n,r[i])	;
		e[i]=distance(a,pos);
		c(e[i]-d[i])
	}
}