小明在电脑上持续录入 n 个单词。
其中,第 i 个单词在第 ti 秒录入电脑。
一个单词录入完毕后,如果连续 c秒都没有录入新的单词,则屏幕将会刷新,屏幕中所有单词都被清空。
具体来说,如果前一个单词在第 a 秒录入,后一个单词在第 b 秒录入,那么:
- 如果 b−a≤c,则将后一个单词附加到屏幕中其他单词的后面。
- 如果 b−a>c,则前面的所有单词都会消失,屏幕中只会保留最后一个单词。
请你计算,当所有单词录入完毕时,屏幕中共有多少个单词。
例如,当 n=6,c=5,每个单词的录入时间依次为 1,3,8,14,19,20 时,注意以下几个时间点:
- 第 8 秒时,屏幕中有三个单词。
- 第 13 秒时,屏幕中所有单词清空。
- 第 14 和 19秒,屏幕中各添加一个单词。
- 第 20 秒时,屏幕再添一个单词,全部单词录入完毕,此时屏幕中共有 3 个单词。
输入格式
第一行包含两个整数 n 和 c。
第二行包含 n 个整数 t1,t2,…,tn。
输出格式
输出一个整数,表示当所有单词录入完毕时(即第 tntn 秒时),屏幕中存在的单词数量。
数据范围
1≤n≤105,
1≤c≤109,
1≤t1<t2<…<tn≤109。(10的9次方,上面那个是10的5次方)
输入样例1:
6 5
1 3 8 14 19 20
输出样例1:
3
输入样例2:
6 1
1 3 5 7 9 10
输出样例2:
2
AC:比较简单,单词计数的时候并不好计数。仔细思考之后可以发现,每次清屏或者从头开始的时候,我们都会少计一次,所以并不影响在最后输出的时候加上一次 就能得到正确的答案。
#include<stdio.h>
int main()
{
int n,c;
scanf("%d %d",&n,&c);
int cnt = 0;
int time[n];
for(int i = 0; i < n ;i++)
{
scanf("%d",&time[i]);
}
int first = 0;
int last = 1;
while(first < n && last < n)
{
if((time[last] - time[first]) <= c)
{
cnt++;
}
else
{
cnt = 0;
}
last++;
first++;
}
printf("%d\n",cnt+1);
return 0;
}