CF716A Crazy Computer 题解

Content

有一个电脑,如果过了 \(c\) 秒之后还没有任何打字符的操作,就把屏幕上面所有的字符清空。现在,给定 \(n\) 次打字符的时间 \(t_1,t_2,...,t_n\),求最后屏幕剩下的字符数。

数据范围:\(1\leqslant n\leqslant 10^5,1\leqslant c\leqslant 10^9,1\leqslant t_1\leqslant t_2\leqslant t_3\leqslant ...\leqslant t_n\leqslant 10^9\)

Solution

由于输入数据的特殊性,即保证输入的时间是升序的,所以我们直接判断两次操作之间的时间是否大于 \(c\),大于 \(c\) 就清空,否则就再加上一个字符。注意你可以 \(i=2\to n\),判断 \(a_i-a_{i-1}\) 是否大于 \(m\),也可以从 \(i=1\to n-1\),判断 \(a_{i+1}-a_i\) 是否大于 \(m\),注意循环范围和判断要一一对应。

Code

#include <cstdio>
#include <algorithm>
using namespace std;

int n, m, a[100007], ans = 1;

int main() {
	scanf("%d%d", &n, &m);
	for(int i = 1; i <= n; ++i)	scanf("%d", &a[i]);
	for(int i = 2; i <= n; ++i) {
		if(a[i] - a[i - 1] > m)	ans = 1;
		else	ans++;
	}
	printf("%d", ans);
}
posted @ 2021-12-21 20:16  Eason_AC  阅读(29)  评论(0)    收藏  举报