Harta

Time limit: 3s Memory limit: 512MB Input: harta.in Output: harta.out

Urod este un om politic de influență majoră. Într-o zi acesta a fost invitat de bunul său prieten Rodut pentru a mânca niște pizza pe insula sa privată. Urod, fiind un mare fan al insulelor private și al preparatelor cu temă italiană, a acceptat invitația și a luat un avion ca să poată ajunge pe insulă.

Apropiindu-se cu avionul de insulă, acesta a reușit să vadă că insula se aseamănă cu o matrice cu NN linii și MM coloane, cu SS atracții turistice (muzee de artă, restaurante de 5 stele, castele gonflabile etc.). Urod notează fiecare secțiune din insulă cu o pereche de numere întregi pozitive (x,y)(x, y), reprezentând celula de pe linia xx și coloana yy.

Urod vrea să viziteze mai multe atracții înainte de masă, alegând un mod special de a le parcurge. Dacă se află în punctul (a,b)(a, b), va proceda astfel:

  • Adună toate celulele (xi,yi)(x_i, y_i) cu atracții turistice într-o listă.
  • Sortează lista — mai întâi după distanța Manhattan față de (a,b)(a,b), iar la distanțe egale după ordinea lexicografică a celulelor.
  • Se mută la a LL-a celulă din lista sortată (indexată de la 11).

Ordinea în listă. O atracție (xi,yi)(x_i, y_i) apare înaintea atracției (xj,yj)(x_j, y_j) dacă:

DistManhattan((a,b),(xi,yi))<DistManhattan((a,b),(xj,yj))sauDistManhattan((a,b),(xi,yi))=DistManhattan((a,b),(xj,yj))   și   (xi,yi) e lexicografic mai mica˘ decaˆ(xj,yj).\begin{aligned} & \mathrm{DistManhattan}((a,b),(x_i,y_i)) < \mathrm{DistManhattan}((a,b),(x_j,y_j)) \quad\text{sau}\\[4pt] & \mathrm{DistManhattan}((a,b),(x_i,y_i)) = \mathrm{DistManhattan}((a,b),(x_j,y_j)) \;\text{ și }\; (x_i,y_i) \text{ e lexicografic mai mică decât } (x_j,y_j). \end{aligned}

Definiții folosite:

  • DistManhattan ⁣((a,b),(c,d))=ac+bd\mathrm{DistManhattan}\!\left((a,b),(c,d)\right) = |a-c| + |b-d|, unde |\cdot| este valoarea absolută.
  • (a,b)(a,b) este lexicografic mai mică decât (c,d)(c,d) dacă a<ca < c, sau a=ca = c și b<db < d.

Urod vrea să afle, pentru QQ celule de start (qxi,qyi)(qx_i, qy_i): în ce celulă s-ar muta după prima sa mutare?

Date de intrare

Fișierul harta.in conține:

  • Linia 1: numerele întregi NN, MM, SS, LL.
  • Următoarele SS linii: perechile (xi,yi)(x_i,\,y_i) — locațiile atracțiilor turistice.
  • Linia S+2S{+}2: numărul QQ.
  • Următoarele QQ linii: perechile (qxi,qyi)(qx_i,\,qy_i) — celulele de start.

Date de ieșire

Fișierul harta.out conține QQ linii. Pe linia ii se află perechea de numere (separate printr-un spațiu) reprezentând a LL-a cea mai apropiată atracție turistică față de celula (qxi,qyi)(qx_i,\,qy_i).

Restricții și precizări

  • 1N,M1 0001 \le N, M \le 1 \ 000
  • 1SNM1 \le S \le N \cdot M
  • 1Lmin(12,S)1 \le L \le \min(12,S)
  • 1xiN1 \le x_i \le N și 1yiM1 \le y_i \le M pentru orice 1iS1 \le i \le S
  • Nu există două atracții turistice în aceeași celulă.
  • 1QNM1 \le Q \le N \cdot M
  • 1qxiN1 \le qx_i \le N și 1qyiM1 \le qy_i \le M pentru orice 1iQ1 \le i \le Q
# Puncte Restricții
1 10 L=1L = 1, Q=1Q = 1, 1N,M101 \le N, M \le 10
2 15 L=1L = 1, 1N,M1001 \le N, M \le 100
3 15 L=1L = 1, S=2S = 2
4 15 S=20S = 20
5 10 L=1L = 1
6 15 L=2L = 2
7 20 Fără restricții suplimentare

Exemplul 1

harta.in

3 3 3 2
1 1
2 2
3 3
3
2 1
2 3
3 3

harta.out

2 2
3 3
2 2

Exemplul 2

harta.in

4 5 4 1
2 4
4 5
4 2
1 2
4
3 1
3 3
2 3
1 3

harta.out

4 2
2 4
2 4
1 2

Explicații

Primul exemplu — matrice 3×33\times3, atracții în (1,1)(1,1), (2,2)(2,2), (3,3)(3,3),
L=2L=2:

Query (2,1)(2,1): Distanțele sunt d(1,1)=1d(1,1)=1, d(2,2)=1d(2,2)=1, d(3,3)=3d(3,3)=3. Deoarece (1,1)(1,1) și (2,2)(2,2) sunt la distanță egală, se aplică ordinea lexicografică: (1,1)<lex(2,2)(1,1)<_{\text{lex}}(2,2). Lista finală: [(1,1),(2,2),(3,3)][(1,1),(2,2),(3,3)]. L=2L=2 \Rightarrow răspuns: (2,2)(2,2).

Query (2,3)(2,3): Distanțele: d(2,2)=1d(2,2)=1, d(3,3)=1d(3,3)=1, d(1,1)=3d(1,1)=3. Egalitate între (2,2)(2,2) și (3,3)(3,3); (2,2)<lex(3,3)(2,2)<_{\text{lex}}(3,3). Lista finală: [(2,2),(3,3),(1,1)][(2,2),(3,3),(1,1)]. L=2L=2 \Rightarrow răspuns: (3,3)(3,3).

Query (3,3)(3,3): Startul este chiar o atracție, deci d(3,3)=0d(3,3)=0. Lista finală: [(3,3),(2,2),(1,1)][(3,3),(2,2),(1,1)]. L=2L=2 \Rightarrow răspuns: (2,2)(2,2).

Al doilea exemplu — matrice 4×54\times5, L=1L=1 (cea mai apropiată atracție):

  • Start (3,1)(3,1): cea mai apropiată atracție este (4,2)(4,2) \to răspuns: (4,2)(4,2).
  • Start (3,3)(3,3): răspuns: (2,4)(2,4).
  • Start (2,3)(2,3): răspuns: (2,4)(2,4).
  • Start (1,3)(1,3): răspuns: (1,2)(1,2).

Ilustrație vizuală — Exemplul 1 (3×33\times3, L=2L=2)

Log in or sign up to be able to send submissions!