#include <bits/stdc++.h>
using namespace std;
int main() {
int n;
cin >> n;
vector<int> a(n);
for (int i = 0; i < n; ++i) cin >> a[i];
if (n <= 1) {
cout << 0 << '\n';
return 0;
}
int steps = 0, end = 0, far = 0;
for (int i = 0; i < n - 1; ++i) {
if (i > far) { // 已经跳不到当前位置了
cout << -1 << '\n';
return 0;
}
far = max(far, i + a[i]); // 下一跳的最远可达
if (i == end) { // 需要进行一次跳跃,扩展区间
++steps;
end = far;
if (end >= n - 1) break; // 已覆盖终点
}
}
cout << (end >= n - 1 ? steps : -1) << '\n';
return 0;
}

京公网安备 11010502036488号