题目链接:http://codeforces.com/problemset/problem/892/B
题意:对于一排人来说,如果存在i > j && j >= i - a[i],则i可以杀死j,一个人杀死其他人都是同时进行的,问最后会剩下几个人。
思路:每当输入一个a[i]时,便判断其与其前面的是否符合上面的条件,符合就下标减一,知道没有元素符合这个条件或者下标变成0
#include <bits/stdc++.h>
using namespace std;
int n,a[1100000];
int main(){
scanf("%d",&n);
int indx = 0,x;
for(int i = 1; i <= n; i ++){
scanf("%d",&x);
while(a[indx] && i - x <= a[indx]) indx --;
a[++ indx] = i;
}
printf("%d\n",indx);
return 0;
}