Echipa de volei UNSTPB se așează în linie, la diferite distanțe unii de alții.
Un jucător cu puterea poate face următoarea acțiune: lansează mingea 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 în pătrățele, până atinge pe cineva sau iese afară.
Jucătorul care primește mingea, având altă putere , 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 de și , astfel:
- dacă ajunge , atunci jucătorul a fost atins la un moment dat;
- dacă rămâne , atunci jucătorul nu a fost atins niciodată.
La început, , iar restul elementelor sunt . Avem două cazuri:
- mingea e aruncată la stânga, din în ;
- mingea e aruncată la dreapta, din în .
Dacă jucătorul este atins într-unul dintre cazuri, atribuim , și apelăm recursiv funcția de fill pentru jucătorul .
Se repetă procesul până când nu se mai poate atinge un jucător nou.
Date de intrare
Se citeste de la tastatură.
Pe următoarele linii se află câte o pereche de numere naturale, unde reprezintă poziția jucătorului , iar este puterea acestuia.
După, se citește , 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
- 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 ( este pentru loc unde nu e vreun jucător):
- Jucătorul (de poziție) 4 (de putere ) îi atinge pe și pe .
- Jucătorul îl atinge pe .
- Jucătorul îl atinge pe .
- Jucătorul îl atinge .
- Jucătorul îl atinge pe .
- Jucătorul nu atinge pe nimeni.
În total, au fost atinși jucători.
Exemplul 2
stdin
3
4000 7
293644 8
8661523 11
1
stdout
2
Explicație
- Jucătorul lansează mingea în dreapta, și sare din în , până se oprește la jucătorul .
- Jucătorul nu poate da mingea nimănui.
- Jucătorul NU primește mingea.