Volei

Time limit: 0.05s Memory limit: 4MB Input: Output:

Echipa de volei UNSTPB se așează în linie, la diferite distanțe unii de alții.

Un jucător cu puterea kk poate face următoarea acțiune: lansează mingea kk poziții la dreapta sau la stânga, aceasta oprindu-se la primul jucător pe care-l atinge. Daca la prima cădere nu atinge un jucător, atunci aceasta va sări din kk în kk pătrățele, până atinge pe cineva sau iese afară.

Jucătorul care primește mingea, având altă putere kk, poate s-o dea în stânga sau dreapta, în același mod.

Știm jucătorul care are inițial mingea. Presupunem că se simulează toate cazurile (pentru fiecare jucător, când lansează mingea primită, în stânga, apoi în dreapta). Câți jucători vor fi avut mingea în cel puțin unul dintre cazuri?

Cerință

Aveți la dispoziție un program C++ (aici sau în secțiunea „Atașamente” din lateral) care implementează problema anterioară, dar acesta conține câteva bug-uri. Corectați programul.

Indicație

Se folosește un algoritm de fill, unde utilizăm un vector vv de 11 și 00, astfel:

  • dacă viv_i ajunge 11, atunci jucătorul ii a fost atins la un moment dat;
  • dacă viv_i rămâne 00, atunci jucătorul ii nu a fost atins niciodată.

La început, vstart=1v_{start} = 1, iar restul elementelor sunt 00. Avem două cazuri:

  • mingea e aruncată la stânga, din kk în kk;
  • mingea e aruncată la dreapta, din kk în kk.

Dacă jucătorul ii este atins într-unul dintre cazuri, atribuim vi=1v_i = 1, și apelăm recursiv funcția de fill pentru jucătorul ii.

Se repetă procesul până când nu se mai poate atinge un jucător nou.

Date de intrare

Se citeste nn de la tastatură.

Pe următoarele nn linii se află câte o pereche ai bia_i \ b_i de numere naturale, unde aa reprezintă poziția jucătorului ii, iar bb este puterea acestuia.

După, se citește startstart, indicele jucătorului care are mingea la început.

Date de ieșire

Se va afișa numărul de jucători care primesc mingea la un moment dat, în oricare dintre cazuri.

Restricții și precizări

  • 1n1 0001 \le n \le 1\ 000
  • 1ai1 000 000 0001 \le a_i \le 1\ 000\ 000\ 000
  • 1bi1 0001 \le b_i \le 1\ 000
  • 1startn1 \le start \le n
  • Se garantează ca jucătorii sunt deja sortați în ordinea în care sunt așezați în linie, începând de la poziția cea mai mică.
  • În numărare se consideră și jucătorul inițial
  • Nu există doi jucători pe aceeași poziție.

Exemplul 1

stdin

8
1 1
2 10
4 3
5 2
7 4
9 5
11 9
12 1000
4

stdout

6

Explicație

Așezarea jucătorilor în linie arată astfel (x\textcolor{red}{\text{x}} este pentru loc unde nu e vreun jucător):

1 10 x 3 2 x 4 x 5 x 9 10001\ 10 \textcolor{red}{\text{ x }} 3\ 2 \textcolor{red}{\text{ x }} 4 \textcolor{red}{\text{ x }} 5 \textcolor{red}{\text{ x }} 9\ 1000

  • Jucătorul (de poziție) 4 (de putere 33) îi atinge pe 11 și pe 77.
  • Jucătorul 11 îl atinge pe 22.
  • Jucătorul 77 îl atinge pe 1111.
  • Jucătorul 22 îl atinge 1212.
  • Jucătorul 1111 îl atinge pe 22.
  • Jucătorul 1212 nu atinge pe nimeni.

În total, au fost atinși 55 jucători.

Exemplul 2

stdin

3
4000 7
293644 8
8661523 11
1

stdout

2

Explicație

  • Jucătorul 40004000 lansează mingea în dreapta, și sare din 77 în 77, până se oprește la jucătorul 86615238661523.
  • Jucătorul 86615238661523 nu poate da mingea nimănui.
  • Jucătorul 293644293644 NU primește mingea.

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