Cod sursa(job #2423532)

Utilizator lucametehauDart Monkey lucametehau Data 21 mai 2019 17:34:53
Problema Gropi Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <fstream>
#include <algorithm>
#define x first
#define y second
#define pii pair <int, int>

using namespace std;

ifstream cin ("gropi.in");
ofstream cout ("gropi.out");

int c, n, m;
pii a, b;

int changes[100005];
pii v[100005];

int main() {
  cin >> c >> n;
  for(int i = 1; i <= n; i++)
    cin >> v[i].y >> v[i].x;
  v[++n] = {c + 1, 3};
  sort(v + 1, v + n + 1);
  changes[1] = (v[1].y != v[2].y);
  for(int i = 2; i < n; i++)
    changes[i] = changes[i - 1] + (v[i].y != v[i + 1].y);
  cin >> m;
  for(; m; m--) {
    cin >> a.y >> a.x >> b.y >> b.x;
    if(a > b)
      swap(a, b);
    int poz1 = upper_bound(v + 1, v + n + 1, make_pair(a.y, 0)) - v;
    if(b.x <= v[poz1].x)
      cout << b.x - a.x + 1 + (a.y != b.y) << "\n";
    else {
      int poz2 = upper_bound(v + 1, v + n + 1, make_pair(b.y, 0)) - v - 1;
      cout << b.x - a.x + 1 + changes[poz2] - changes[poz1] + (a.y == v[poz1].y) + (b.y == v[poz2].y) << "\n";
    }
  }
  return 0;
}