Pagini recente » Cod sursa (job #251883) | Cod sursa (job #989653) | Cod sursa (job #442240) | Rating Szepesi_robert (szepi) | Cod sursa (job #563547)
Cod sursa(job #563547)
# include <algorithm>
# include <cstdio>
# define x first
# define y second
# define mp std :: make_pair
# define ub std :: upper_bound
const char *FIN = "gropi.in", *FOU = "gropi.out" ;
const int MAX = 100005 ;
std :: pair < int, int > V[MAX], X, Y ;
int dp[MAX] ;
int N, C, T ;
int main ( void ) {
freopen ( FIN, "r", stdin ) ;
freopen ( FOU, "w", stdout ) ;
scanf ( "%d %d", &C, &N ) ;
for ( int i = 0; i < N; ++i ) {
scanf ( "%d %d", &V[i].y, &V[i].x ) ;
}
V[N++] = mp ( C + 5, 0 ), std :: sort ( V, V + N ) ;
dp[0] = V[0].y != V[1].y ;
for ( int i = 1; i + 1 < N; ++i ) {
dp[i] = ( V[i].y != V[i + 1].y ) + dp[i - 1] ;
}
for ( scanf ( "%d", &T ) ; T ; --T ) {
scanf ( "%d %d %d %d", &X.y, &X.x, &Y.y, &Y.x ) ;
if ( Y < X ) std :: swap ( X, Y ) ;
int A = ub ( V, V + N, mp ( X.x, 0 ) ) - V ;
if ( Y.x <= V[A].x ) {
printf ( "%d\n", Y.x - X.x + 1 + ( X.y != Y.y ) ) ;
} else {
int B = ub ( V, V + N, mp ( Y.x, 0 ) ) - V - 1 ;
printf ( "%d\n", Y.x - X.x + 1 + dp[B - 1] - dp[A - 1] + (X.y == V[A].y) + (Y.y == V[B].y) ) ;
}
}
}