最大子数组(c++题解)

题目描述

题目描述

给你一个长度为  的整数数组 。

求长度为  的  的连续子数组  中  的最大值。

连续子数组定义:

一个数列的连续子数组是指从原数组中连续若干个元素组成的子数组。

例如,和是的连续子数组,但和不是的连续子数组。

输入格式

第一行:输入两个整数  和 

第二行: 个整数表示 

输出格式

单个整数:表示答案。

样例
样例输入1
复制4 2
5 4 -1 8
样例输出1
复制15
样例解释1

当时,有。不可能得到更大的值,因此答案为 。

请注意,不能选择。

样例输入2
复制10 4
-3 1 -4 1 -5 9 -2 6 -5 3
样例输出2
复制31

____________________________________________________________________________
日常发作业题解。 

也是简单到爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆爆表的题

写作不易,点个赞呗!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 

_____________________________________________________________________________

#include 
using namespace std;
long long n,m,a[1000005],b[1000005],ans,cnt;
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;i++){
		cin>>a[i];
		b[i]=b[i-1]+a[i];
	} 
	for(int i=1;i<=m;i++){
		cnt+=i*a[i];
	}
	ans=cnt;
	for(int i=m+1;i<=n;i++){
		cnt+=a[i]*m;
		cnt-=b[i-1]-b[i-m-1];
		ans=max(ans,cnt);
	}
	cout<

 

你可能感兴趣的:(c++,算法,数据结构)