蓝桥杯_挑选子串_组合数学_乘法原理_ / 尺取法

//
#include<bits/stdc++.h>
using namespace std;

typedef long long LL;
const int N=2e5+6;
LL in[N],f[N];

int main()
{
    LL n,m,k,i,pos,ans;

    while( cin>>n>>m>>k )
    {
        ans=pos=0;
        for( i=1;i<=n;i++ )
        {
            cin>>in[i];
            if( in[i]<m ) continue;

            f[++pos]=i;                     // ++pos
            if( pos<k ) continue;
                                            // 1
            if( pos==k )    ans+=f[1]*( n-i+1 );
            else            ans+=( f[pos-k+1]-f[pos-k] )*( n-i+1 );
        }                                   // pos-k>=1 ==> ++pos
        cout<<ans<<endl;
    }
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_63173957/article/details/125221083
今日推荐