涉及算法:滑动窗口(同向双指针)
解决思路:
  1. 定义两个指针 left = 0, right = 0;
  2. right向后遍历数组
    进窗口:sum += arr[right]
    判断:如果 sum >= x,就重复以下操作:
            (1)更新结果:如果比当前区间的长度 len 更小,则更新最终的左右指针
            (2)出窗口:sum -= arr[left] , 同时left++
C++代码实现如下:
#include <iostream>
using namespace std;

const int N = 1e7 + 10;
int arr[N];

int n, x;

int main()
{
    cin >> n >> x;
    for(int i = 1; i <= n; i++) cin >> arr[i]; // 下标从1开始
    
    // 滑动窗口解决
    int left = 0, right = 0, sum = 0;
    int len = N, l = -1, r = -1;
    
    while(right <= n)
    {
        // 进窗口
        sum += arr[right];
        
        // 判断
        while(sum >= x)
        {
            // 更新结果
            if(len > right - left + 1)
            {
                len = right - left + 1;
                l = left, r = right;
            }
            // 出窗口
            sum -= arr[left++];
        }
        // 准备下一次进窗口
        right++;
    }
    
    cout << l << " " << r;
    
    return 0;
}