Cod sursa(job #572696)

Utilizator SpiderManSimoiu Robert SpiderMan Data 5 aprilie 2011 15:52:42
Problema Grendizer Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
# include <algorithm>
# include <fstream>
# include <vector>
using namespace std ;

# define tot(A) A.begin (), A.end ()
# define lb(A, x, y) lower_bound ( tot(A), make_pair ( x, y ) )
# define ub(A, x, y) upper_bound ( tot(A), make_pair ( x, y ) )
# define sr(A)       sort ( tot(A) )

const char *FIN = "grendizer.in", *FOU = "grendizer.out" ;

vector < pair < int, int > > A, B ;
int N, M ;

int main ( void ) {
    ifstream f ( FIN ) ;
    ofstream g ( FOU ) ;

    f >> N >> M ;
    for ( int i = 1, x, y ; i <= N; ++i ) {
        f >> x >> y ;
        A.push_back ( make_pair ( x + y, y ) ) ;
        B.push_back ( make_pair ( x - y, y ) ) ;
    }
    sr(A), sr(B) ;

    for ( int x, y, r ; M; --M ) {
        f >> x >> y >> r ;
        g << ub(A, x + y - r, y) - lb (A, x + y - r, y - r) + ub(A, x + y + r, y + r) - lb(A, x + y + r, y) +
        lb (B, x - y - r, y + r) - ub (B, x - y - r, y) + lb (B, x - y + r, y) - ub (B, x - y + r, y - r) << '\n' ;
    }
}