Revizia anterioară Revizia următoare
Fişierul intrare/ieşire: | triunghiuri.in, triunghiuri.out | Sursă | FMI No Stress 10 |
Autor | Seritan Luca | Adăugată de | |
Timp execuţie pe test | 0.1 sec | Limită de memorie | 65536 kbytes |
Scorul tău | N/A | Dificultate | N/A |
Vezi solutiile trimise | Statistici
Triunghiuri
Un nou grup infractional, Z, a aparut la tine in oras si incearca sa distruga Craciunul.
Se stie ca harta orasului este un plan cu diverse locatii importante, reprezentate drept puncte in acest plan.
Z actioneaza intr-un mod foarte specific: intotdeauna ataca cate 3 puncte de interes, dar doar daca triunghiul format de acestea este un triunghi intreg. Un triunghi se numeste intreg daca are toate coordonatele colturilor intregi si este de arie intreaga (inclusiv 0).
Cunoscand cele N locatii intitiale si Q modificari pe care le sufera harta, trebuie sa realizezi un program care calculeaza in cate moduri ar putea infractorii sa tinteasca 3 puncte, atat pentru configuratia intiala, cat si dupa fiecare modificare.
Date de intrare
Fişierul de intrare triunghiuri.in contine pe prima linie 2 numere: N si Q.
Pe urmatoarele N linii se gasesc coordonatele celor N puncte initiale.
Pe urmatoarele Q linii este descrisa cate o operatie. Acestea pot fi de doua tipuri:
- 1 X Y - se insereaza un nou punct la coordonatele (X, Y). Se garanteaza ca acest punct nu exista deja.
- 2 X Y - se sterge un punct de la coordonatele (X, Y). Se garanteaza ca acest punct exista deja.
Date de ieşire
În fişierul de ieşire triunghiuri.out se vor afisa Q+1 linii, numarul de triunghiuri speciale pentru configuratia initiala precum si dupa fiecare actualizare.
Restricţii
- 1 ≤ N ≤ 10000
- 0 ≤ Q ≤ 10000
- -109 ≤ x, y ≤ 109
- Toate coordonatele sunt numere intregi
- Pentru 50% din teste se garanteaza ca n ≤ 100 si q = 0.
- Un triunghi degenerat (de arie 0) este considerat intreg.
- O modificare anterioara se pastreaza si pentru modificarile ce o urmeaza.
Exemplu
triunghiuri.in | triunghiuri.out |
---|---|
5 0 5 8 9 2 9 9 9 -6 10 -5 | 7 |
5 5 5 -4 -2 3 -5 9 5 -8 4 1 2 4 1 1 8 9 2 5 -8 1 4 2 1 4 3 | 6 2 6 2 3 10 |