top1编程
← 返回题目
题解

【入门】不太甜的糖果

1 条题解

  • 0
    @ 2026-7-28 22:10:17
    #include <bits/stdc++.h> 
    using namespace std;
    long long a[230005],b[230005];
    int n,m;
    bool f(int mid){
    	for(int i=mid;i<=n;i++){//循环后半段
    		if(b[i]-b[i-mid]>=m){//按预设长度判断
    			return true;
    		}
    	}
    	return false;
    }
    int main(){
    	cin>>n>>m;
    	for(int i=1;i<=n;i++){
    		cin>>a[i];
    		b[i]=b[i-1]+a[i];//前缀和
    	}
    	int l=1,r=n;
    	while(l<=r){
    		int mid=l+(r-l)/2;//预设长度
    		if(f(mid)==true){//当前长度能符合要求
    			r=mid-1;
    		}else{
    			l=mid+1;
    		}
    	}
    	cout<<l;
    }
    
    • 1