将上述转化的C代码中除了DQQ和QQ两个一维数组外其他一维数组下标均减去1
修改后的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;
}
``
原文地址: https://www.cveoy.top/t/topic/fRi5 著作权归作者所有。请勿转载和采集!