# 无所谓,我会出手~
```cpp
#include<iostream>
#include<stdio.h>
#include<math.h>
#include<cstring> // 初始代码
#include<set>
using namespace std;
int main(){
int n = 0,m = 0,min = 3000;
cin >> n >> m;
int a[3500];
for(int i = 0;i < n;i ++){
cin >> a[i];
}
for(int i = 0;i < n - m + 1;i ++){
int s = 0;
for(int j = i;j <= i + m - 1;j ++){
s += a[j];
}
if(i == 0){
min = s;
}else{
if(min > s){
min = s;
}
}
}
cout << min << endl;
}
```
by JTRAKM @ 2023-04-08 15:02:51
@[liyong5114](/user/917683)
```cpp
if(m+i>n+1){
break;
}
```
你这里 `m+i` 不会被加上,因而 `m+i-1>=n` 都是合乎要求的右边界。如果最小区间就是最右边能取到的区间,那么你的答案显然大一些。
另外 `i` 的取值是可以预先算清楚的吧。
`int i=1;i<=n-m+1;i++`。
最后一个点是 `0 0`,输出是`0`,可以通过特判的方式解决。
一个测试人员进入酒吧要了 0 杯啤酒。
by Terrible @ 2023-04-08 15:08:00
@[JTRAKM](/user/942973) 啊这,我们有题解区,不需要你发能过的代码,另外有80分就可以去看其他人的公开记录了吧。![](//图.tk/1)
by Terrible @ 2023-04-08 15:09:14
洛谷有这个规定?
by rnfmabj5114 @ 2023-04-08 15:12:32
另外不能认为函数内的数组总是全 $0$ 的,所以 `for(int i=1;sum[i];i++)`并不妥当,要么把它开在全局区,要么对`sum[i]`进行初始化。
by Terrible @ 2023-04-08 15:23:00