park

Time limit: 1.3s Memory limit: 256MB Input: park.in Output: park.out

Cerință

Harta orașului Old Non este reprezentată ca o matrice imensă cu NN linii și MM coloane. Liniile sunt numerotate de sus în jos, de la 00 la N1N - 1, iar coloanele de la stânga la dreapta, de la 00 la M1M - 1. O poziție pe hartă este dată printr-o pereche (x,y)(x, y), unde xx este indicele liniei (poziția pe verticală), iar yy este indicele coloanei (poziția pe orizontală); astfel, colțul din stânga-sus al hărții are coordonatele (0,0)(0, 0).

Personajul nostru, Nefe, se află în mașina sa excentrică, care ocupă o zonă dreptunghiulară pe hartă. El trebuie să parcheze mașina într-unul dintre spațiile de parcare special amenajate, evitând în același timp clădirile și alte obstacole din oraș.

Mașina lui Nefe se poate deplasa doar prin translație în sus, jos, stânga sau dreapta. Prin translație înțelegem că întreaga mașină se mută rigid, păstrându-și forma și dimensiunile (nu se rotește și nu se deformează): la o mutare, toate celulele din care este formată mașina se deplasează simultan cu o unitate în aceeași direcție.

Regulile orașului sunt stricte când vine vorba de deplasarea autovehiculelor:

  • Nicio parte a mașinii nu are voie să părăsească limitele matricei: orice celulă a mașinii trebuie să aibă linia în intervalul [0,N1][0, N - 1] și coloana în intervalul [0,M1][0, M - 1].
  • Nicio parte a mașinii nu se poate suprapune, nici măcar parțial, peste un obstacol.
  • Pentru a fi considerată „parcată”, mașina trebuie să se afle integral în interiorul unei zone de parcare valide.

Nefe vrea să afle numărul minim de mutări necesare pentru a duce mașina din poziția inițială într-o poziție de parcare validă. Dacă acest lucru este imposibil, se va afișa 1-1.

Date de intrare

Fișierul de intrare park.in conține pe prima linie 66 numere întregi separate prin spații: NN, MM, startxstart_x, startystart_y, endxend_x, endyend_y, reprezentând numărul de linii NN și numărul de coloane MM ale orașului, urmate de coordonatele colțului stânga-sus, respectiv dreapta-jos, ale mașinii în poziția inițială.

A doua linie conține un număr întreg KK, reprezentând numărul de obstacole.

Următoarele KK linii conțin câte 44 numere întregi x1x_1, y1y_1, x2x_2, y2y_2, reprezentând coordonatele colțului stânga-sus și dreapta-jos ale fiecărui obstacol.

Următoarea linie conține un număr întreg PP, reprezentând numărul zonelor de parcare.

Următoarele PP linii conțin câte 44 numere întregi x1x_1, y1y_1, x2x_2, y2y_2, reprezentând coordonatele colțurilor stânga-sus și dreapta-jos ale fiecărei zone de parcare.

Date de ieșire

Fișierul de ieșire park.out va conține un singur număr întreg: numărul minim de mutări necesare pentru a parca mașina. Dacă mașina nu poate ajunge în nicio parcare validă, se va afișa 1-1.

Restricții și precizări

  • 1N,M10151 \leq N, M \leq 10^{15};
  • 0startxendx<N0 \leq start_x \leq end_x < N și 0startyendy<M0 \leq start_y \leq end_y < M;
  • 0K,P5000 \leq K, P \leq 500;
  • Toate coordonatele obstacolelor și parcărilor se află în interiorul limitelor orașului.
  • Mașina, obstacolele și parcările din datele de intrare sunt toate reprezentate de dreptunghiuri disjuncte două câte două.
  • Unele dintre valorile din datele de intrare, precum și răspunsul, pot depăși domeniul tipului întreg pe 3232 de biți; se recomandă utilizarea unui tip de date pe 6464 de biți (de exemplu, long long în C++). De asemenea, se garantează că răspunsul nu va depăși domeniul tipului de date întreg cu semn pe 6464 de biți (de exemplu, long long în C++).

Punctaj pe subtaskuri

# Punctaj Restricții
11 1717 1N,M2 0001 \leq N, M \leq 2 \ 000, startx=endxstart_x = end_x, starty=endystart_y = end_y
22 1212 1N,M2 0001 \leq N, M \leq 2 \ 000
33 77 1N,M10151 \leq N, M \leq 10^{15}, K=0K = 0
44 88 1N10151 \leq N \leq 10^{15}, M=1M = 1
55 2424 1N,M10151 \leq N, M \leq 10^{15}, startx=endxstart_x = end_x, starty=endystart_y = end_y
66 2121 1N,M10151 \leq N, M \leq 10^{15}, 0K,P2000 \leq K, P \leq 200
77 1111 Fără restricții suplimentare

Exemplu

park.in

8 6 0 0 1 1
1
4 0 5 3
2
5 4 5 4
6 0 7 1

park.out

14

Explicație

Matricea are N=8N = 8 linii și M=6M = 6 coloane. Mașina este un dreptunghi (mai exact, un pătrat în acest caz) de 2×22 \times 2, aflat inițial cu colțul din stânga-sus în (0,0)(0, 0), adică în linia 00, coloana 00.

Dintre cele două parcări, prima (de dimensiune 1×11 \times 1) este prea mică pentru ca mașina 2×22 \times 2 să încapă integral în ea, deci nu poate fi folosită. Rămâne parcarea (6,0)(6, 0)(7,1)(7, 1), în care mașina încape exact.

Deplasarea directă în jos (de-a lungul coloanelor 00 și 11) este blocată de obstacolul (4,0)(4, 0)(5,3)(5, 3) (liniile 4455, coloanele 0033). Pentru a-l ocoli, mașina se deplasează 44 coloane la dreapta (în coloanele 4455), coboară 66 linii pentru a trece de obstacol, apoi revine 44 coloane la stânga, intrând complet în parcare. În total 4+6+4=144 + 6 + 4 = 14 mutări, ceea ce reprezintă și minimul posibil.

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