B. Prison Transfer

time limit per test
1 second
memory limit per test
256 megabytes
input
standard input
output
standard output

The prison of your city has n prisoners. As the prison can't accommodate all of them, the city mayor has decided to transfer c of the prisoners to a prison located in another city.

For this reason, he made the n prisoners to stand in a line, with a number written on their chests. The number is the severity of the crime he/she has committed. The greater the number, the more severe his/her crime was.

Then, the mayor told you to choose the c prisoners, who will be transferred to the other prison. He also imposed two conditions. They are,

  • The chosen c prisoners has to form a contiguous segment of prisoners.
  • Any of the chosen prisoner's crime level should not be greater then t. Because, that will make the prisoner a severe criminal and the mayor doesn't want to take the risk of his running away during the transfer.

Find the number of ways you can choose the c prisoners.

Input

The first line of input will contain three space separated integers n (1 ≤ n ≤ 2·105)t (0 ≤ t ≤ 109) and c (1 ≤ c ≤ n). The next line will contain n space separated integers, the ith integer is the severity ith prisoner's crime. The value of crime severities will be non-negative and will not exceed 109.

Output

Print a single integer — the number of ways you can choose the c prisoners.

Sample test(s)
input
4 3 3
2 3 1 1
output
2
input
1 1 1
2
output
0
input
11 4 2
2 2 0 7 3 2 2 4 9 1 4
output
6

解题说明:题目意思翻译过来就是判断一个连续区间内的数是否都超过一个阈值,做法是对数列进行遍历,符号条件就计数即可。

#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstdlib>
#include <algorithm>
#include<cstring>
using namespace std;

int main()
{
	int n, t, c;
	int tc = 0;
	int ans = 0;
	int temp;
	scanf("%d%d%d", &n, &t, &c);
	while (n--)
	{
		scanf("%d", &temp);
		if (temp > t)
		{
			tc = 0;
		}
		else
		{
			tc++;
			if (tc >= c)
			{
				ans++;
			}
		}
	}
	printf("%d\n", ans);
	return 0;
}


你可能感兴趣的:(B. Prison Transfer)