
1 // 升维
2 #include <bits/stdc++.h>
3 using namespace std;
4 const int MAX = 1e3+10;
5 int sum[MAX][MAX];
6 void init() {
7 memset(sum,0,sizeof(sum));
8 }
9 int lowbit(int x) {
10 return x&-x;
11 }
12 void modify(int x,int y,int val) {
13 for(int i=x;i<MAX;i+=lowbit(i)) {
14 for(int j=y;j<MAX;j+=lowbit(j)) {
15 sum[i][j]+=val;
16 }
17 }
18 }
19 int query(int x,int y) {
20 int res=0;
21 for(int i=x;i;i-=lowbit(i)) {
22 for(int j=y;j;j-=lowbit(j)) {
23 res+=sum[i][j];
24 }
25 }
26 return res;
27 }
28 int main() {
29 int n,m;
30 int x,y;
31 while(scanf("%d %d",&n,&m)==2) {
32 init();
33 for(int i=1;i<=n;i++) {
34 scanf("%d %d",&x,&y);
35 modify(x,y,1);
36 }
37 for(int i=1;i<=m;i++) {
38 scanf("%d %d",&x,&y);
39 printf("%d ",query(MAX-2,y)-query(x-1,y));
40 }
41 }
42 return 0;
43 }
2 #include <bits/stdc++.h>
3 using namespace std;
4 const int MAX = 1e3+10;
5 int sum[MAX][MAX];
6 void init() {
7 memset(sum,0,sizeof(sum));
8 }
9 int lowbit(int x) {
10 return x&-x;
11 }
12 void modify(int x,int y,int val) {
13 for(int i=x;i<MAX;i+=lowbit(i)) {
14 for(int j=y;j<MAX;j+=lowbit(j)) {
15 sum[i][j]+=val;
16 }
17 }
18 }
19 int query(int x,int y) {
20 int res=0;
21 for(int i=x;i;i-=lowbit(i)) {
22 for(int j=y;j;j-=lowbit(j)) {
23 res+=sum[i][j];
24 }
25 }
26 return res;
27 }
28 int main() {
29 int n,m;
30 int x,y;
31 while(scanf("%d %d",&n,&m)==2) {
32 init();
33 for(int i=1;i<=n;i++) {
34 scanf("%d %d",&x,&y);
35 modify(x,y,1);
36 }
37 for(int i=1;i<=m;i++) {
38 scanf("%d %d",&x,&y);
39 printf("%d ",query(MAX-2,y)-query(x-1,y));
40 }
41 }
42 return 0;
43 }