NanoApe Loves Sequence Ⅱ

来源:互联网 发布:钱夹式纸巾 知乎 编辑:程序博客网 时间:2024/05/16 19:43

将小于m的数为0,其余数为1,只要区间中1的个数大于k即可

#include <iostream>  #include <cstdio>  #include <cstring>  #include <algorithm>  #include <cmath>  #include <queue>  using namespace std;  #define N 200050  int a[N];  int main()  {      int T,n,m,k;      scanf("%d",&T);      while(T--)      {          scanf("%d %d %d",&n,&m,&k);          int t=0;          long long sum=0;          for(int i=1; i<=n; i++)              scanf("%d",&a[i]);          int r=1,num=0;          for(int i=1;i<=n;i++)          {              while(r<=n&&num<k)              {                  if(a[r]>=m) num++;                  r++;              }              if(num>=k) sum+=n-(r-1)+1;              if(a[i]>=m) num--;          }          printf("%lld\n",sum);      }      return 0;  }  


1 0