Pagini recente » Cod sursa (job #2069326) | Cod sursa (job #3156959) | Cod sursa (job #1075894) | Cod sursa (job #2032931) | Cod sursa (job #563549)
Cod sursa(job #563549)
# include <algorithm>
# include <fstream>
using namespace std ;
# define x first
# define y second
# define mp make_pair
# define ub upper_bound
const char *FIN = "gropi.in", *FOU = "gropi.out" ;
const int MAX = 100005 ;
pair < int, int > V[MAX], X, Y ;
int dp[MAX] ;
int N, C, T ;
int main ( void ) {
ifstream f ( FIN ) ;
ofstream g ( FOU ) ;
f >> C >> N ;
for ( int i = 0; i < N; ++i ) {
f >> 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 ( f >> T ; T ; --T ) {
f >> X.y >> X.x >> Y.y >> Y.x ;
if ( Y < X ) swap ( X, Y ) ;
int A = ub ( V, V + N, mp ( X.x, 0 ) ) - V ;
if ( Y.x <= V[A].x ) {
g << Y.x - X.x + 1 + ( X.y != Y.y ) << "\n" ;
} else {
int B = ub ( V, V + N, mp ( Y.x, 0 ) ) - V - 1 ;
g << Y.x - X.x + 1 + dp[B - 1] - dp[A - 1] + (X.y == V[A].y) + (Y.y == V[B].y) << "\n" ;
}
}
}