比赛 2024暑假C班集训C 评测结果 EEEEETEEEE
题目名称 灯笼 最终得分 0
用户昵称 dream 运行时间 3.872 s
代码语言 C++ 内存使用 3.29 MiB
提交时间 2024-07-12 10:18:28
显示代码纯文本
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=100005;
ll n,m,x;
ll lk[N];
ll qzh[N];
ll qzh2[N];
int mk[20005];
int read(){
	char c;
	int sum=0,f=1;
	c=getchar();
	while(c<'0'||c>'9'){
		if(c=='-'){
			f=-1;
		}
		c=getchar();
	}
	while(c>='0'&&c<='9'){
		sum=sum*10+c-'0';
		c=getchar();
	}
	return sum*f;
}
namespace subtask1{
    int main(){
    	ll res=0;
        for(int i=1;i<=n;i++){
        	for(int j=i;j<=n;j++){
        		int m1=qzh2[j]-qzh[i-1];
        		if(m1>m){
        			break;
				}
				if(qzh[j]-qzh[i-1]>=x){
//					cout<<i<<" "<<j<<"\n";
					if(j==i){
						res++;
					}
					else{
						res+=2;
					}
				}
			}
		}
		cout<<res;
		return 0;
    }
}
namespace task4{
    int main(){
        ll res=0;
        for(int i=1;i<=n;i++){
            for(int j=i;j<=n;j++){
                if(qzh[j]-qzh[i-1]>=x){
                    if(i==j){
                        res++;
                    }
                    else{
                        res+=2;
                    }
                }
            }
        }
        cout<<res;
        return 0;
    }
}
int main(){
	freopen("lantern.in","r",stdin);
	freopen("lantern.out","w",stdout);
    n=read();
    m=read();
    x=read();
    for(int i=1;i<=n;i++){
        lk[i]=read();
    	if(!mk[lk[i]]){
    		mk[lk[i]]=1;
    		qzh2[i]=qzh2[i-1]+1;
		}
    }
    for(int i=1;i<=n;i++){
        qzh[i]=qzh[i-1]+lk[i];
    } 
    if(m==n){
        return task4::main();
    }    
    else{
    	return subtask1::main();
	}
    return 0;
}