利用滑动窗口进行求解,即前后指针方法,不断进行更新 #include using namespace std;
int main()
{
int n,x;
cin>>n>>x;
int arr[n];
for(int i =0;i<n;i++) cin>>arr[i];
int left = 0,right = 0,len = -1;
int releft = 0,reright = 0,relen = 1000000;
int sum =0;
while(right < n)
{
sum += arr[right];
while(sum >= x)
{
len = right - left + 1;
if(relen > right - left + 1)
{
relen = right - left +1;
reright = right+1;
releft = left+1;
}
sum -= arr[left++];
}
right++;
}
cout<<releft<<" "<<reright<<endl;
return 0;
}