博士为了锻炼大家的观察和细心能力,给同学们出了一道题目:现在在地面上摆放一排地雷,但是在地雷中可能混有沼泽,沼泽会有x范围的影响,在它前后的x个地雷,都会因潮湿而无法正常爆炸。沼泽和地雷都有对应的编号,地雷用数字1表示,沼泽用数字0表示,如果是沼泽还会包含一个数字x,表示这个沼泽的影响范围。现在告诉你这些沼泽和地雷的信息,计算出还有多少个地雷可以正常爆炸。
输入n+1行:
第一行:一个数字n表示沼泽和炸弹的总个数。
接下来n行:每行若干个数字,若是为一个整数a则表示该位置是炸弹,若是为两个整数b和x,则表示是沼泽,x为沼泽的影响范围,输入的顺序表示对应沼泽和炸弹的位置。(1<=x,n<=1000)
输出一个整数即可以正常爆炸的炸弹个数。
#include <bits/stdc++.h>
using namespace std;
bool flag[1000010];
int n, tmp, s, ans;
int main() {
cin >> n;
for (int i = 1; i <= n; i++) {
cin >> tmp;
if (tmp == 0) {
cin >> s;
for (int j = max(1, i - s); j <= min(n, i + s); j++) {
flag[j] = 1;
}
}
}
for (int i = 1; i <= n; i++) {
if (flag[i] == 0) ans++;
}
cout << ans << "\n";
return 0;
}