我的双指针为啥不对,求助啊,难受
查看原帖
我的双指针为啥不对,求助啊,难受
524191
Man_CCNU楼主2021/12/7 10:03
#include<iostream>
#include<algorithm>

using namespace std;

const int N = 4e6 + 10;
int a[N], n, m;
long long res;

int main()
{
    cin >> n>>m;
    for (int i = 1; i <= n; i++) cin >> a[i];
    int l = 1, cur = 1;//左指针和右指针
    int resl = -1, resr = -1;//答案区间
    long long tem = 0;//当前的区间和
    while (l <= n) {
        while (tem <= m && cur <= n) {
            tem += a[cur];
            cur++;
            if (tem <= m) { 
                int tt=res;
                res = max(res, tem); 
                if(tt!=res)//如果答案更新了,就更新区间
                    resl = l, resr = cur - 1;
            }
        }
        if (l <= cur) tem -= a[l];
        l++;
    }
    cout << resl << " " << resr << " " << res<<endl;

    return 0;
}
2021/12/7 10:03
加载中...