salturi

Time limit: 0.085s Memory limit: 16MB Input: salturi.in Output: salturi.out

Se dă un șir de numere întregi a0,a1,…,aN−1a_0, a_1, \dots, a_{N-1}. Fiecare valoare aia_i reprezintă mărimea maximă a unui salt ce poate fi efectuat din pozitia ii. Din poziţia i, se poate ajunge printr-un salt la oricare din poziţiile i+1i+1, i+2i+2, …\dots, i+aii+a_i, dacă aia_i este pozitiv, iar dacă aia_i este negativ se poate ajunge la oricare din poziţiile i−1i-1, i−2i-2, …\dots, i−aii-a_i. Trebuie să se ajungă, prin salturi, de la poziția 00 la o poziție mai mare decât N−1N - 1 (în afara vectorului, la dreapta).

Cerinţă

Scrieți un program care să determine numărul minim de salturi necesare pentru a ajunge de la poziția 00 la o poziție mai mare decât N−1N - 1.

Date de intrare

Fişierul de intrare salturi.in conţine pe prima linie numărul natural NN. Pe linia a doua se află scrise cele NN numere ale șirului, separate prin spații.

Date de ieşire

Fişierul de ieşire salturi.out va conține un singur număr natural reprezentând numărul minim de salturi necesare pentru a ajunge de la poziția 00 la o poziție mai mare decât N−1N - 1.

Restricții și precizări

  • 2≤N≤1 000 0002 \leq N \leq 1 \ 000 \ 000
  • −1 000 000≤ai≤1 000 000-1 \ 000 \ 000 \leq a_i \leq 1 \ 000 \ 000, pentru fiecare 0≤i≤N−10 \leq i \leq N - 1.
  • Întotdeauna este posibil să se ajungă la o poziţie mai mare decât N−1N - 1.
  • Concurenţilor care scriu programe C/C++ li se recomandă să citească datele de intrare cu ajutorul funcţiilor din biblioteca C.

Exemplu

salturi.in

5
2 3 -10 1 1

salturi.out

3

Explicație

De la poziția 00 se sare la poziția 11, apoi la poziția 44, apoi în afara șirului.

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