Pagini recente » Cod sursa (job #109016) | Cod sursa (job #1348917) | Cod sursa (job #3137412) | Cod sursa (job #547080) | Cod sursa (job #25450)
Cod sursa(job #25450)
#include <stdio.h>
#include <algorithm>
using namespace std;
#define maxN 50100
int n,m,w,h,res;
struct po{
int x,y;
};
po og[maxN];
bool pred(po a,po b){
if(a.x<b.x || (a.x==b.x && a.y<=b.y))
return true;
return false;
}
int bsch(int cx,int cy){
int st=0,en=n-1,c=en/2;
while(st<en){
if(cx<og[c].x || (cx==og[c].x && cy<=og[c].y )){
en=c-1;
}else{
st=c+1;
}
}
return st;
}
int main(){
FILE*fi=fopen("ograzi.in","r"),*fo=fopen("ograzi.out","w");
fscanf(fi,"%d %d %d %d",&n,&m,&w,&h);
for(int i=0;i<n;i++){
fscanf(fi,"%d %d",&og[i].x,&og[i].y);
}
sort(og,og+n,pred);
for(int i=0;i<m;i++){
int cx,cy;
fscanf(fi,"%d %d",&cx,&cy);
int r=bsch(cx,cy);
if(cx>=og[r].x && cy>=og[r].y && cx<=og[r].x+w && cy<=og[r].y+h){
res++;
}else{
if(r){
r--;
if(cx>=og[r].x && cy>=og[r].y && cx<=og[r].x+w && cy<=og[r].y+h){
res++;
}else{
if(r<n-1){
r++;
if(cx>=og[r].x && cy>=og[r].y && cx<=og[r].x+w && cy<=og[r].y+h){
res++;
}
}
}
}
}
}
fprintf(fo,"%d",res);
fclose(fi);fclose(fo);
return 0;
}