Hands that shed innocent blood!

There are *n* guilty people in a line, the *i*-th of them holds a claw with length *L*<sub class="lower-index">*i*</sub>. The bell rings and every person kills some of people in front of him. All people kill others at the same time. Namely, the *i*-th person kills the *j*-th person if and only if *j* &lt; *i* and *j* ≥ *i* - *L*<sub class="lower-index">*i*</sub>.

You are given lengths of the claws. You need to find the total number of alive people after the bell rings.
The first line contains one integer *n* (1 ≤ *n* ≤ 10<sup class="upper-index">6</sup>) — the number of guilty people.

Second line contains *n* space-separated integers *L*<sub class="lower-index">1</sub>, *L*<sub class="lower-index">2</sub>, ..., *L*<sub class="lower-index">*n*</sub> (0 ≤ *L*<sub class="lower-index">*i*</sub> ≤ 10<sup class="upper-index">9</sup>), where *L*<sub class="lower-index">*i*</sub> is the length of the *i*-th person's claw.
In first sample the last person kills everyone in front of him.
4
0 1 0 10
1
2
0 0
2
10
1 1 3 0 0 0 2 1 0 3
3
10
0 0 2 0 0 3 3 2 2 0
2
1
0
1
5
0 0 0 1 0
4
6
3 1 1 0 3 3
1
8
0 0 0 1 0 0 1 2
5
1
1000000000
1
2
1 3
1
2
1000000000 1000000000
1
11
1 0 0 1 1 3 2 0 0 2 3
4
1
1
1
#include <stdio.h>
#include <iostream>
#include <fstream>
#include <algorithm>
#include <cstring>
#include <string>
#include <math.h>
#include <queue>
#include <bitset>
#include <utility>

typedef long long ll;
typedef std::vector<ll> vi;

const double EPS = 1e-12;
const ll MAX = 1e6 + 10;
const ll MOD = 1e9 + 7;

using namespace std;
int ls[1000010];

int main(){
    cin.tie(0);
    ios_base::sync_with_stdio(0);
    int n;
    cin >> n;
    for(int i = 0; i < n; i++){
        cin >> ls[i];
    }
    int alive = 1;
    int lastKill = n;
    for(int i = n; i > 0; i--){
        if(i < lastKill){
            alive++;
        }
        if(lastKill > 0 && ls[i-1] > 0  && lastKill > i - ls[i-1]){
            lastKill = i - ls[i-1];
        }

    }
    cout << alive << endl;
}
