MRECT1 - Điểm trên cạnh hình chữ nhật - HRASTOVI
Tác giả: hieult
Ngôn ngữ: C++
#include <cstdio>
#include <vector>
#include <cstdlib>
#include <algorithm>
//#include <conio.h>
using namespace std;
vector<pair < int, int> > X,Y;
int n,que,x,y,x1,x2,y1,y2;
inline int Q_fow(vector<pair<int,int> > &P, int x,int y1,int y2){
return upper_bound(P.begin(),P.end(),make_pair(x,y2))- upper_bound(P.begin(),P.end(),make_pair(x,y1));
}
inline int Q_rev(vector<pair<int,int> > &P,int x, int y1,int y2){
return lower_bound(P.begin(),P.end(),make_pair(x,y2))-lower_bound(P.begin(),P.end(),make_pair(x,y1));
}
int main()
{
scanf("%d",&n);
for(int i = 0;i<n;i++)
{
scanf("%d %d",&x,&y);
X.push_back(make_pair(x,y));
Y.push_back(make_pair(y,x));
}
sort(X.begin(),X.end());
sort(Y.begin(),Y.end());
scanf("%d",&que);
for(int i = 1;i<=que;i++)
{
scanf("%d %d %d %d",&x1,&y1,&x2,&y2);
printf("%d\n",Q_fow(X,x1,y1,y2)+Q_fow(Y,y2,x1,x2)+Q_rev(X,x2,y1,y2)+Q_rev(Y,y1,x1,x2));
}
// getch();
}