Constangeles

Time limit: 3s Memory limit: 256MB Input: Output:

De fapt suntem doar doi...

Acum că au reușit să facă Constanța tare din nou, cei patru se întâlnesc cu o nouă provocare: următoarea rundă de la OOIT. Astfel, Rara decide să își cheme buzduganul magic la el acasă ca să se pregătească pentru concurs. Problema e că, odată cu venirea frigului și a ploilor, a picat și curentul în întregul oraș. Acesta este curpins de o beznă totală, iar cei doi prieteni nu se mai pot găsi. Se pare că nu e chiar așa de tare Constanța…

Orașul este în formă de matrice dreptunghiulară de dimensiuni N×MN \times M, unde fiecare element al acesteia reprezintă o bucată de drum. Din fericire, Rara știe KK poziții ai unor stâlpi de iluminat pe care îi poate aprinde, chiar și fără curent, folosindu-se de bateria sa magică.

Fiecare stâlp de iluminat i (1iK)i \ (1 \leq i \leq K) se află pe linia XiX_i și coloana YiY_i și are o rază RiR_i de iluminare. Dacă acesta este aprins, el va ilumina toate bucățile de drum (Xd,Yd)(X_d, Y_d) pentru care XdXi+YdYiRi|X_d - X_i| + |Y_d - Y_i| \leq R_i.

De asemenea, stâlpii sunt legați printr-un fir magic astfel încât, dacă stâlpul ii este aprins, atunci se vor aprinde și stâlpii precedenți acestuia. Formal, aprinderea unui stâlp de iluminat ii duce la aprinderea stâlpilor de iluminat jj cu proprietatea că 1ji1 \leq j \leq i.

Cerință

Cum Rara este un băiat tare leneș, vă roagă să îl ajutați să găsească numărul minim de stâlpi ce trebuie aprinși pentru ca prietenul său să poată ajunge din punctul de start (1,1)(1, 1) până la el, în (N,M)(N, M), mergând doar pe direcțiile NN, SS, EE și VV și numai pe bucăți de drum iluminate de stâlpi.

Date de intrare

Pe prima linie se află, separate prin câte un spațiu, NN și MM (dimensiunile orașului) și KK (numărul de stâlpi de iluminat).
Pe următoarele KK linii se găsesc trăsăturile stâlpilor. Astfel, pe linia i+1i + 1 se află XiX_i, YiY_i și RiR_i, caracteristicile celui de-al ii-lea stâlp, separate prin câte un spațiu.

Date de ieșire

Pe prima linie se va afla numărul minim de stâlpi ce trebuie aprinși astfel încât cei doi prieteni să se întâlnească.

Restricții și precizări

  • 1N,M10001 \leq N, M \leq 1000.
  • 1KNM1 \leq K \leq N \cdot M.
  • 1XiN1 \leq X_i \leq N.
  • 1YiM1 \leq Y_i \leq M.
  • 0Ri20000 \leq R_i \leq 2000.
  • Se garantează că, dacă Rara aprinde toți stâlpii de iluminat, atunci prietenul lui va ajunge la (N,M)(N, M).
  • Se garantează că pe o bucată de drum se va afla cel mult un stâlp de iluminat.
  • Pentru citirea și afișarea rapidă, se recomandă folosirea acestor linii de cod la începutul funcției main:
ios::sync_with_stdio(false);  
cin.tie(NULL);  
cout.tie(NULL);  
# Punctaj Restricții
0 0 Exemplul
1 21 1N,M1001 \leq N, M \leq 100
2 17 0Ri50 \leq R_i \leq 5
2 62 Fără restricții suplimentare

Exemplu

stdin

5 4 6
1 1 2
4 2 1
5 1 1
5 3 1
2 4 0
3 4 1

stdout

4

Explicație

După ce Rara aprinde primele 44 stâlpuri de iluminat, orașul arată astfel:

[11101100110011101111]\begin{bmatrix} 1 & 1 & 1 & 0 \\ 1 & 1 & 0 & 0 \\ 1 & 1 & 0 & 0 \\ 1 & 1 & 1 & 0 \\ 1 & 1 & 1 & 1 \\ \end{bmatrix}

În această matrice am notat bucățile de drum cu 11 dacă sunt iluminate și cu 00 în caz contrar.
Se poate observa că există un drum pe care prietenul lui Rara îl poate parcurge de la (1,1)(1, 1) până la (5,4)(5, 4), mergând numai pe bucăți de drum iluminate.
Un astfel de drum este următorul: (1,1)(2,1)(3,1)(4,1)(5,1)(5,2)(5,3)(5,4)(1, 1) \rightarrow (2, 1) \rightarrow (3, 1) \rightarrow (4, 1) \rightarrow (5, 1) \rightarrow (5, 2) \rightarrow (5, 3) \rightarrow (5, 4)

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