用双指针维护当前区间和 ,右指针不断扩展直到 后尽量右移左指针收缩区间,并在每次满足条件时按“长度最短,左指针最小”更新答案;

void solve(){
	int n,x;cin>>n>>x;
    vi a(n+1);
    for(int i=1;i<=n;++i){
        cin>>a[i];
    }
    int l=1,u=1,v=n,mn=n+1;
    ll s=0;
    for(int i=1;i<=n;++i){
        s+=a[i];
        while(l<=i&&s-a[l]>=x){
            s-=a[l];
            ++l;
        }
        if(s>=x){
            int cur=i-l+1;
            if(cur<mn||(cur==mn&&l<u)){
                mn=cur;
                u=l;
                v=i;
            }
        }
    }
    cout<<u<<" "<<v;
}