Divinitate

Time limit: 1.8s Memory limit: 512MB Input: divinitate.in Output: divinitate.out

Pe îndepărtatul tărâm Algorithmicus, pacea este pe cale să se încheie...

Tărâmul este format din uscat și apă. Uscatul este controlat în integralitate de KK regate (numerotate de la 11 la KK) în timp ce apa nu este controlată de niciun regat.

Tărâmul este reprezentat printr-o matrice DD cu NN linii și MM coloane. Fiecare celulă a sa conține:

  • fie un număr natural pozitiv reprezentând indicele regatului căruia îi aparține, dacă celula corespunde unei zone de uscat a tărâmului;
  • fie valoarea 00, dacă celula corespunde unei zone de apă a tărâmului.

Spunem că două celule se învecinează dacă au o latură comună.

Un lanț de celule este o listă de celule cu proprietatea că oricare două celule consecutive din listă se învecinează.

Două regate AA și BB se învecinează dacă se îndeplinește cel puțin una dintre condițiile:

  • există o celulă a regatului AA și o celulă a regatului BB care se învecinează;
  • există o celulă a regatului AA și o celulă a regatului BB care sunt capetele unui lanț de celule format numai din celule de apă, cu excepția capetelor.

Fiecare regat ii are o putere de luptă proprie, descrisă printr-un întreg pozitiv, notat cu ViV_i.

Un regat AA poate ataca un alt regat vecin BB doar dacă puterea sa actuală este mai mare sau egală ca puterea regatului vecin (VAVBV_A \geq V_B). După cucerirea regatului BB, întregul său teritoriu devine parte din teritoriul regatului AA, iar întreaga sa putere de luptă se adaugă la puterea totală a regatului AA (adică VAVA+VBV_A \gets V_A + V_B).

Un regat AA poate cuceri regate succesiv, extinzându-și teritoriul și mărindu-și puterea până când condiția mai sus menționată nu se mai îndeplinește în raport cu niciun alt regat. În această situație, dacă regatul AA nu ocupă deja întregul uscat, regele său (și liderul bisericesc) poate invoca benevolența divinității, cerându-i să-i crească puterea regatului (VAV_A) cu minimul necesar care să-i permită reluarea campaniei de cuceriri.

Cerință

Se dă un întreg CC, numărul cerinței de rezolvat, după cum urmează:

  • Dacă C=1C = 1 atunci se dau QQ interogări de forma SiS_i. Pentru fiecare dintre aceste interogări calculați, pornind de la starea inițială, care este puterea maximă pe care regatul SiS_i o poate atinge fără invocarea divinității. Ca excepție, dacă regatul SiS_i poate ocupa întregul uscat fără invocarea divinității, atunci răspunsul va fi 00.
  • Dacă C=2C = 2 atunci se dau QQ interogări de forma (Si,Fi)(S_i, F_i). Pentru fiecare dintre aceste interogări calculați, pornind de la starea inițială, cantitatea minimă de putere pe care regatul SiS_i trebuie să o primească din partea divinității pentru a reuși să cucerească regatul FiF_i.
  • Dacă C=3C = 3 atunci se dau QQ interogări de forma (Si,Fi)(S_i, F_i). Pentru fiecare dintre aceste interogări calculați, pornind de la starea inițială, numărul minim de situații în care divinitatea trebuie să-și manifeste benevolența față de regatul SiS_i pentru a reuși să cucerească regatul FiF_i.

Date de intrare

Fișierul de intrare divinitate.in conține pe prima linie întregii CC, NN, MM și KK. Pe fiecare dintre următoarele NN linii se află câte MM întregi separați prin câte un spațiu, reprezentând matricea DD. Pe următoarea linie se află puterile inițiale ale regatelor: V1,V2,,VKV_1, V_2, \ldots, V_K, separați prin câte un spațiu. Pe următoarea linie se află se află întregul QQ. Fiecare dintre următoarele QQ linii conțin unul sau doi întregi: SiS_i sau SiS_i și FiF_i, în funcție de CC).

Date de ieșire

Fișierul de ieșire divinitate.out va conține QQ linii, linia ii conținând câte un număr întreg, răspunsul pentru interogarea ii.

Restricții și precizări

  • 1C31 \leq C \leq 3
  • 1N,M1 0001 \leq N, M \leq 1 \ 000
  • 1KNM1 \leq K \leq N \cdot M
  • 0Di,jK0 \leq D_{i,j} \leq K, pentru 1iN1 \leq i \leq N și 1jM1 \leq j \leq M
  • 1Q300 0001 \leq Q \leq 300 \ 000
  • 1Vi10181 \leq V_i \leq 10^{18}, pentru 1iK1 \leq i \leq K
  • 1Si,FiK1 \leq S_i, F_i \leq K și SiFiS_i \neq F_i, pentru 1iQ1 \leq i \leq Q
  • Un regat poate fi format din mai multe zone izolate pe hartă (exclave). Cucerirea unei exclave implică cucerirea întregului regat.
  • Se garantează că inițial fiecare dintre cele KK regate controlează cel puțin o celulă.
  • Apa nu aparține niciunui regat, nu poate fi cucerită de vreun regat și poate fi privită strict ca pe o cale de deplasare.

Tabelul de mai jos reprezintă distribuția de punctaj în funcție de restricții și cerință:

# Restricții C=1C = 1 C=2C = 2 C=3C = 3
1 N100N \leq 100, M100M \leq 100, Q100Q \leq 100, Di,j0D_{i,j} \neq 0 pentru 1iN1 \leq i \leq N și 1jM1 \leq j \leq M 1 2 3
2 N100N \leq 100, M100M \leq 100, Q30 000Q \leq 30 \ 000, Di,j0D_{i,j} \neq 0 pentru 1iN1 \leq i \leq N și 1jM1 \leq j \leq M 2 3 4
3 N100N \leq 100, M100M \leq 100, Q100Q \leq 100 2 3 4
4 N100N \leq 100, M100M \leq 100, Q30 000Q \leq 30 \ 000 2 3 4
5 Oricare două regate se învecinează 5 9 13
6 Q30 000Q \leq 30 \ 000 4 6 9
7 Fără alte restricții 4 7 10

Exemplul 1

divinitate.in

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

divinitate.out

0
16
16
16
1
16

Exemplul 2

divinitate.in

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

divinitate.out

0
84
84
0
84
0

Exemplul 3

divinitate.in

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

divinitate.out

0
1
1
0
2
0

Explicație

Regatul 66 este format din două exclave. Cucerirea uneia conduce la cucerirea imediată a celeilalte.

Primul regat poate cuceri toate celelalte regate fără invocarea divinității și va avea o putere finală de 116116. Ca excepție, răspunsul afișat pentru prima cerință va fi 00.

Regatele 22, 33, 44 și 66 pot cuceri toate celelalte regate cu excepția primului regat fără invocarea divinității. La acel moment ele ar avea puterea 1616.

Al cincilea regat nu poate cuceri niciun alt regat fără invocarea divinității. Pentru a putea cuceri primul regat sunt necesare două invocații ale divinității. După prima invocare, regatului îi crește puterea cu 11. După a doua invocare, regatului îi crește puterea cu încă 8383.

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