Parking

Time limit: 0.2s Memory limit: 64MB Input: parking.in Output: parking.out

Mark a construit o parcare dreptunghiulară, pe care a împărțit-o, utilizând marcaje, în locuri de parcare pătrate, organizate pe nn
linii (numerotate de la 11 la nn) și 𝑚 coloane (numerotate de la 11 la mm). Astfel, un loc de parcare poate fi identificat prin numărul liniei şi numărul coloanei pe care acesta se află. Orice mașină poate fi parcată în interiorul unui loc de parcare, paralel cu liniile orizontale de marcaj sau paralel cu liniile verticale, fără a depăși conturul pătratului corespunzător. Mark a construit un zid de împrejmuire a parcării, întrerupt în dreptul unor locuri de parcare, pentru a permite ieșirea mașinilor din parcare. Considerăm că zidul este plasat pe linia 00 (nord), coloana 00 (vest), linia n+1n + 1 (sud) şi coloana m+1m + 1 (est).

O mașină parcată paralel cu marcajele orizontale se poate deplasa pe linie, spre stânga sau spre dreapta, putând ieși din parcare dacă ajunge la o întrerupere a zidului de la vest sau de la est, și doar dacă nu există o nicio altă maşină parcată în sensul ei de deplasare către ieşire. O mașină parcată paralel cu marcajele verticale se poate deplasa pe coloană în sus sau în jos, putând ieși din parcare dacă ajunge la o întrerupere a zidului de la nord sau de la sud și doar dacă nu există nicio altă maşină parcată în sensul ei de deplasare către ieşire. Mașinile se pot deplasa mergând în față sau în marșarier. De exemplu, mașina parcată în locul (2,2)(2,2) paralel cu marcajele orizontale nu poate ieși din parcare, deoarece dacă se deplasează spre vest ajunge la zid, iar dacă se deplasează spre est, nu poate ajunge la întreruperea din zid corespunzătoare acelei linii din cauza altor mașini parcate pe traseu, dar maşina din locul (2,6)(2,6) poate ieşi deplasându-se spre est. Ieșirea din parcare se face în serii consecutive, maşinile dintr-o serie începând deplasarea simultan (după ce au ieșit toate mașinile din seria anterioară); din seria curentă fac parte toate mașinile care, exact la acel moment, au drumul liber spre cel puțin o întrerupere de zid (nu este necesară mișcarea niciunei alte mașini rămase în parcare, inclusiv a celor din seria curentă), chiar dacă traseul lor către ieșire se intersectează cu traseul altor mașini din aceeași serie, aflate în deplasare. În prima serie ies toate mașinile care pot pleca din parcare imediat, fără a fi condiționate de mutarea sau părăsirea parcării de către alte mașini.

Cerință

Scrieți un program care, cunoscând dimensiunile parcării, pozițiile întreruperilor din zid, numărul de mașini, iar pentru fiecare mașină numărul liniei și al coloanei corespunzătoare locului în care este parcată și modul de parcare a acesteia, rezolvă următoarele două cerinţe:

  1. determină numărul de mașini care pot ieși din parcare fără a fi condiționate de mutarea sau de părăsirea parcării de către alte mașini (numărul de maşini care pot ieşi în prima serie);
  2. determină numărul total de maşini care pot ieşi din parcare, precum şi numărul de serii în care se realizează ieşirea tuturor acestor maşini.

Date de intrare

Fişierul de intrare parking.in conţine pe prima linie numerele naturale cc, nn, mm, kk și qq reprezentând, în ordine, numărul cerinței, numărul de linii și numărul de coloane ale parcării, numărul de întreruperi ale zidului parcării, respectiv, numărul de mașini parcate. Pe următoarele kk linii se află câte două numere naturale ii și jj reprezentând pozițiile (linia, respectiv coloana) întreruperilor din zidul parcării. Pe următoarele qq linii se află câte trei numere naturale xx, yy și pp reprezentând, în ordine, numărul liniei și al coloanei corespunzătoare locului în care este parcată o mașină și modul de parcare a acesteia ( pp = 0 pentru parcare paralelă cu marcajele orizontale, respectiv pp = 1 pentru parcare paralelă cu marcajele verticale). Valorile scrise pe aceeaşi linie sunt separate prin câte un spaţiu.

Date de ieșire

Fişierul de ieşire parking.out va conţine o singură linie pe care va fi scris

  • numărul de maşini care au ieşit din parcare în prima serie, dacă c=1c = 1;
  • numărul total de mașini care au ieşit din parcare și numărul de serii în care s-a realizat ieşirea maşinilor, separate printr-un
    spaţiu, dacă c=2c = 2.

Restricții și precizări

  • 2n,m1 0002 \le n, m \le 1 \ 000
  • 2k2n+2m2 \le k \le 2 \cdot n + 2 \cdot m
  • 2qmin(nm,100 000)2 \le q \le min(n \cdot m, 100 \ 000)
  • 1in1 \le i \le n, pentru j=0j = 0 sau j=m+1j = m + 1 și 1jm1 \le j \le m, pentru i=0i = 0 sau i=n+1i = n + 1
  • 1xn1 \le x \le n, 1ym1 \le y \le m, 0p10 \le p \le 1
  • Se garantează pentru datele de test că numărul de serii obținute va fi cel mult 10 00010 \ 000, dacă c=2c = 2.
  • Pe parcursul de plasării pentru a ieși din parcare mașinile vor circula astfel încât nu se vor ciocni.
# Punctaj Restricții
1 12 C=1  n,m,q150C = 1 \ \ n, m, q \le 150
2 16 C=1C = 1 și nu există restricții suplimentare
3 12 C=2  n,m,q150C = 2 \ \ n, m, q \le 150
4 60 C=2C = 2 și nu există restricții suplimentare

Exemple

parking.in

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

parking.out

6

parking.in

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

parking.out

10 3

Explicații

Primul exemplu. Datele corespund imaginii din enunț.

Pot ieși din parcare fără a aștepta mutarea sau plecarea altor mașini cele 66 mașini aflate în locurile de parcare din pozițiile: (2,6)(2, 6) – spre est, (3,1)(3, 1) – spre nord, (4,2)(4, 2) – spre vest, (4,7)(4, 7) – spre sud, (6,1)(6, 1) – spre vest, (6,3)(6, 3) – spre sud.

Al doilea exemplu. Seria 11: ies din parcare cele 6 mașini, specificate la exemplul precedent.

Seria 22: pot ieși din parcare cele 33 mașini aflate în locurile de parcare din pozițiile: (3,6)(3, 6) – spre nord, (4,3)(4, 3) – spre sud, (6,6)(6, 6) – spre vest. Configurația apare în prima imagine de mai jos.

Seria 33: poate ieși din parcare o singură mașină aflată în locul de parcare din poziția: (4,5)(4,5) – spre vest. Vor putea părăsi parcarea în total 6+3+1=106 + 3 + 1 = 10 mașini în 33 serii. Configurația apare în a doua imagine de mai jos.

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