有dalao呀!(最大的和)!

输入长度为 n 的数组 A ,求数组 A 中所有长度为 m 的区间里,区间和最大的那个区间的区间和。(数组中可能出现负数)

输入格式

第一行两个整数 n 和 m
第二行给出 n 个整数,第i个整数代表Ai
1<=n<=10^5,1<=m<=n,-10000<=Ai<=10000

输出格式

输出一行答案,最大的区间长度为 m 的区间和

样例

Input 1

5 3 2 5 -4 10 3

Output 1

11

样例解释

样例输入1的解释:给定数组A=[2, 5, -4, 10, 3],区间长度为3的所有子数组为 [2, 5, -4], [5, -4, 10], [-4, 10, 3],其中区间和最大的子数组为 [5, -4, 10],区间和为11

数据范围

1<=n<=10^5,1<=m<=n,-10000<=Ai<=10000

1 个赞

因为已经规定了区间长度为 m ,所以只要预处理出前缀和,枚举起点就行

//输入并求出前缀和
sum[i]=sum[i-1]+a[i];

for(int i=1;i+m-1<=n;i++)//枚举起点
    ans=max(ans,sum[i+m-1]-sum[i-1]);//求最大区间和
cout << ans;
2 个赞

@学生8 有用给个解决方案

1 个赞

所以说整个怎么写

1 个赞

?你哪里不会写

1 个赞

大佬整个不会写求助!!!

1 个赞

你现在有代码吗

1 个赞

我是一个新手只学了一个月只会头文件大佬

1 个赞

数组会吗

1 个赞

会的大佬

2 个赞