修改后的C代码如下:

#include<stdio.h>
#include<stdlib.h>

#define MAXN 100005

int n, k;
int DQQ[MAXN], QQ[MAXN], sum[MAXN], maxsum[MAXN], maxnum[MAXN];

int main()
{
    scanf("%d%d", &n, &k);
    for(int i = 1; i <= n; i++)
    {
        scanf("%d", &DQQ[i]);
        sum[i] = sum[i - 1] + DQQ[i];
    }

    int head = 1, tail = 1;
    for(int i = 1; i <= n; i++)
    {
        while(head <= tail && QQ[head] < i - k) head++;
        maxsum[i] = sum[i] - sum[QQ[head]];
        maxnum[i] = QQ[head];
        while(head <= tail && sum[i] - sum[QQ[tail]] >= 0) tail--;
        QQ[++tail] = i;
    }

    int ans = maxsum[k], pos = 1;
    for(int i = k + 1; i <= n; i++)
    {
        if(maxsum[i] > ans)
        {
            ans = maxsum[i];
            pos = i - k + 1;
        }
    }
    printf("%d %d", pos, pos + k - 1);
    return 0;
}
``
将上述转化的C代码中除了DQQ和QQ两个一维数组外其他一维数组下标均减去1

原文地址: https://www.cveoy.top/t/topic/fRi5 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录