求助!
查看原帖
求助!
587615
zqh123b楼主2023/5/5 21:32
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define debug(x) cerr<<x<<endl;
#define read(x) x=read_int()
#define writen(x) write_int(x,1)
#define writes(x) write_int(x,2)
inline int read_int(){int x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9') {if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9') x=(x<<1)+(x<<3)+(ch^48),ch=getchar();return x*f;}
void write_int(int x,short e){if(x<0){putchar('-');x=-x;}if(x>9){write_int(x/10,0);}putchar(x%10+'0');if(e==1){putchar('\n');}if(e==2){putchar(' ');}}
inline ll read_ll(){ll x=0,f=1;char ch=getchar();while(ch<'0'||ch>'9') {if(ch=='-')f=-1;ch=getchar();}while(ch>='0'&&ch<='9') x=(x<<1)+(x<<3)+(ch^48),ch=getchar();return x*f;}
void write_ll(ll x,short e){if(x<0){putchar('-');x=-x;}if(x>9){write_ll(x/10,0);}putchar(x%10+'0');if(e==1){putchar('\n');}if(e==2){putchar(' ');}}

const int N=1e5+10;
int n,k,a[N],sum[N],ans=0;
int find(int now){
	int l=now,r=n,out=n+1;
	while(l<=r){
		int mid=l+(r-l)/2;
		if(sum[mid]-sum[now-1]>=k){
			out=mid;
			r=mid-1;
		}else{
			l=mid+1;
		}
	}
	return out;
}
int main(){
	
	read(n);
	read(k);
	for(int i=1;i<=n;i++){
		read(a[i]);
		sum[i]=sum[i-1]+a[i];
	}
	for(int i=1;i<=n;i++){
		if(sum[n]-sum[i-1]<k)continue;
		int big=find(i);
		if(big<=n)ans+=n-big+1;
	}
	writen(ans);
	
	return 0;
}

样例全过,#16点WA [qwq]

2023/5/5 21:32
加载中...