Pagini recente » Cod sursa (job #853741) | Cod sursa (job #3210371) | Cod sursa (job #354021) | Cod sursa (job #1531100) | Cod sursa (job #197681)
Cod sursa(job #197681)
#include <fstream>
using namespace std;
typedef pair <int, int> PII;
#define x first
#define y second
#define MP make_pair
const int NMAX = 1 << 17;
PII A[NMAX];
int S[NMAX];
int main(void) {
ifstream fin("gropi.in");
ofstream fout("gropi.out");
int N, C, M;
int x1, x2, y1, y2;
int p, p1, p2, i, R;
fin >> C >> N;
for (i = 0; i < N; ++i)
fin >> A[i].y >> A[i].x;
sort(A, A + N);
p = A[0].y;
for (i = 1; i < N; ++i) {
S[i] = S[i-1] + A[i].x - A[i-1].x + (p != A[i].y);
p = A[i].y;
}
fin >> M;
for (i = 0; i < M; ++i) {
fin >> x1 >> y1 >> x2 >> y2;
if (y1 > y2) swap(y1, y2), swap(x1, x2);
p1 = upper_bound(A, A + N, MP(y1, 0)) - A;
p2 = upper_bound(A, A + N, MP(y2, 0)) - A - 1;
if (p1 == N || p2 == -1 || p1 == p2) {
R = y2 - y1 + (x1 != x2);
} else {
R = A[p1].x - y1 + (A[p1].y == x1);
R += S[p2] - S[p1];
R += y2 - A[p2].x + (x2 == A[p2].y);
}
fout << R + 1 << '\n';
}
fin.close();
fout.close();
return 0;
}