题目描述:
解题思路:
采用双指针的快慢指针。与蓝桥OJ1372类似。
图解
题解:
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 9;
int a[N];
int main()
{
ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
int n, m, k;cin >> n >> m >> k;
for(int i = 1; i <= n; i++)cin >> a[i];
int ans = 0;
for(int i = 1, cnt = 0, j = 0; i <= n; i++)//初始化写在for里面和写在外面一样
{
while(i > j || (j + 1 <= n && cnt < k))cnt += (a[++j] >= m);
if(cnt >= k)ans += n - j + 1;//ans是答案,计算每种i开头的可能子串数
cnt -= (a[i] >= m);//用逻辑运算式可以减少使用if
}
cout << ans;
return 0;
}