B题:简单的前缀和问题
唯一的坑是输入量较大,需采用scanf输入。
设sum[i]代表从1~i中所有异于前者的雪糕数量。
所以区间[x,y]的愉悦值就等于 sum[y]-sum[x]+1
加1 是因为吃第一个雪糕时愉悦值也会加1。

代码如下:

#include <iostream>
using namespace std;
const int maxn=2000005;
int a[maxn];
int sum[maxn];
int n,k,q,x,y;
int main(){
    scanf("%d%d%d",&n,&k,&q);
//    cin>>n>>k>>q;
    for(int i=1;i<=n;i++)cin>>a[i];
    sum[1]=0;
    for(int i=2;i<=n;i++)
        if(a[i]!=a[i-1])sum[i]=sum[i-1]+1;
        else sum[i]=sum[i-1]; 
    while(q--){
        scanf("%d%d",&x,&y);
        //cin>>x>>y;
        if(sum[y]-sum[x]+1>=k)
            printf("Yes\n");
        else
            printf("No\n");
    }
    return 0;
}