JocCuLasere

Time limit: 1s Memory limit: 128MB Input: lasere.in Output: lasere.out

Cerință

RAU-Gigel testează un joc cu trageri și premii. Jocul constă într-o serie de acțiuni care au loc la anumite momente de timp. Acțiunile pot fi: (1) aparițiile unor premii sau (2) trageri. Premiile apar la anumite înălțimi, pentru un interval de timp bine definit. Tragerile au loc la anumite momente de timp și se propagă în spațiu instantaneu. RAU-Gigel câștigă câte un punct pentru fiecare premiu ochit.

Din păcate, RAU-Gigel nu și-a calibrat bine trăgătorul, astfel încât fiecare tragere devine activă numai între două înălțimi date: [h1,h2][ h1, h2 ], interval numit rază de acțiune. Așadar, RAU-Gigel nu va câștiga puncte decât pentru premiile aflate în raza de acțiune a fiecărei trageri.

Dacă o tragere are loc exact în același moment în care apare un premiu în raza ei de acțiune, acesta se consideră ”ochit”. Similar, dacă un premiu este programat să dispară la un moment de timp în care are loc o tragere, iar el se află în raza de acțiune a tragerii, atunci punctul se consideră câștigat. Un premiu ochit rămâne în joc și poate genera și alte puncte, până la momentul la care este programat să dispară. Nu pot avea loc două trageri în același moment, dar pot exista mai multe premii la aceeași înălțime în același timp și toate sunt generatoare de puncte.

Dându-se numărul NN de operații de tipul 11 sau 22, unde:

  • Operația 1 t d h1 \ t \ d \ h – reprezintă un premiu: tt este momentul în care apare, dd este numărul de unități de timp cât este programat să existe, iar hh este înălțimea la care apare;
  • Operația 2 t h1 h22 \ t \ h1 \ h2 – reprezintă o tragere, tt este momentul în care are loc, iar h1h1 și h2h2 reprezintă înălțimile în care tragerea este activă (raza de acțiune).

Să se afle câte puncte câștigă RAU-Gigel la fiecare tragere și care este punctajul cu care termină jocul?

Date de intrare

Fișierul de intrare lasere.in conține pe prima linie un număr natural NN. Pe următoarele NN linii se află operațiile, în ordine crescătoare a momentului tt de începere a acțiunii, de tipul 11 și 22, de forma:

  • 1 t d h1 \ t \ d \ h , unde tt, dd, hh sunt 33 numere naturale separate cu un spațiu, cu semnificația de mai sus, reprezintă o operație de tipul 11;
  • 2 t h1 h22 \ t \ h1 \ h2 , unde tt, h1h1, h2h2 sunt 33 numere naturale separate cu un spațiu, cu semnificația de mai sus, reprezintă o operație de tipul 22.

Date de ieșire

Fișierul de ieșire lasere.out va conține răspunsurile, în ordinea solicitării, pentru operațiile de tip 22, câte unul pe linie, iar pe ultimul rând, punctajul lui RAU-Gigel la sfârșitul jocului.

Restricții și precizări

  • 2N100 0002 \leq N \leq 100 \ 000
  • 1t,d,h,h1,h21 000 000 0001 \leq t, d, h, h1, h2 \leq 1 \ 000 \ 000 \ 000, h1<h2h1 < h2

Exemplul 1

lasere.in

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

lasere.out

0
2
2

Explicație

Sunt 44 acțiuni, dintre care 22 trageri (tipul 22). La prima tragere RAU-Gigel nu nimerește singurul premiu existent în momentul tragerii (momentul 33), pentru că aceasta nu este în raza sa de acțiune.

La a doua tragere, din momentul 88, RAU-Gigel nimerește ambele premii.

Total: 0+2=20+2=2.

Exemplul 2

lasere.in

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

lasere.out

1
0
3
4

Explicație

Sunt 66 acțiuni, dintre care 33 trageri. În momentul 22 au loc 22 acțiuni: o tragere și apariția unui premiu. Pentru că premiul, aflat la înălțimea 44, este în raza de acțiune a acestei trageri și anume în intervalul [45][ 4-5 ], RAU-Gigel câștigă un punct.

La a doua tragere, nu nimerește nimic, singurul premiu existent în acel moment nefiind în raza sa de acțiune.

La a treia tragere, RAU-Gigel mai câștigă 33 puncte, acele premii fiind în raza de acțiune a tragerii (intervalul 484-8). Se numără inclusiv primul premiu, planificat să existe până în momentul 1010, care este și momentul tragerii. De asemenea, se numără și ultimul premiu, apărut chiar în momentul tragerii.

Total: 1+0+3=41+0+3=4.

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