CODE
import java.util.Scanner;
import javax.xml.namespace.QName;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int m = sc.nextInt();
int q = sc.nextInt();
//a[l][r]表示列车恰好在[l][r]
int [][] a = new int [n + 10][n + 10];
int [][] f = new int [n + 10][n + 10];
for(int i = 1; i <= m; i ++) {
int l = sc.nextInt();
int r = sc.nextInt();
a[l][r] ++;
}
//牛逼,滚动数组
//第一个维度,更新的时候是i + 1,所以应该逆序遍历
//比如求f[4][j] 用到了f[5][j]
//但是如果求f[4][j]的时候,f[5][j]还没有求出来呢!
//所以应该倒序
//第二个维度,更新的时候是j - 1,应该使用正序遍历
//比如求f[i][2] 用到了f[i][1]如果逆序的话
//遍历到f[i][2]的时候,f[i][1]结果还没出来
//所以应该正序
//f[i][j] = f[i + 1][j] + f[i][j - 1] - dp[l][]
for(int i = n; i >= 1; i --)
for(int j = i; j <= n; j ++){
f[i][j] = f[i + 1][j] + f[i][j - 1] - f[i + 1][j - 1] + a[i][j];
}
while(q -- > 0) {
int l = sc.nextInt();
int r = sc.nextInt();
System.out.println(f[l][r]);
}
}
}