Cod sursa(job #2024727)

Utilizator refugiatBoni Daniel Stefan refugiat Data 21 septembrie 2017 07:22:57
Problema Grendizer Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#define mp make_pair
using namespace std;
ifstream si("grendizer.in");
ofstream so("grendizer.out");
pair<int,int>*it1,*it2,a[100005],b[100005];
int main()
{
    int n,m,x,y;
    si>>n>>m;
    for(int i=1;i<=n;++i)
    {
        si>>x>>y;
        a[i]=mp(x+y,y);
        b[i]=mp(x-y,y);
    }
    sort(a+1,a+n+1);
    sort(b+1,b+n+1);
    int r,sum;
    while(m--)
    {
        sum=0;
        si>>x>>y>>r;
        it1=lower_bound(a+1,a+n+1,mp(x+y-r,y-r));
        it2=upper_bound(a+1,a+n+1,mp(x+y-r,y));
        sum+=it2-it1;
        it1=lower_bound(a+1,a+n+1,mp(x+y+r,y));
        it2=upper_bound(a+1,a+n+1,mp(x+y+r,y+r));
        sum+=it2-it1;
        it1=upper_bound(b+1,b+n+1,mp(x-y+r,y-r));
        it2=lower_bound(b+1,b+n+1,mp(x-y+r,y));
        sum+=it2-it1;
        it1=upper_bound(b+1,b+n+1,mp(x-y-r,y));
        it2=lower_bound(b+1,b+n+1,mp(x-y-r,y+r));
        sum+=it2-it1;
        so<<sum<<'\n';
    }
    return 0;
}