There is a fence in front of Polycarpus's home. The fence consists of n planks of the same width which go one after another from left to right. The height of the i-th plank is hi meters, distinct planks can have distinct heights.

Polycarpus has bought a posh piano and is thinking about how to get it into the house. In order to carry out his plan, he needs to take exactly k consecutive planks from the fence. Higher planks are harder to tear off the fence, so Polycarpus wants to find such kconsecutive planks that the sum of their heights is minimal possible.
Write the program that finds the indexes of k consecutive planks with minimal total height. Pay attention, the fence is not around Polycarpus's home, it is in front of home (in other words, the fence isn't cyclic).
Input
The first line of the input contains integers n and k (1 ≤ n ≤ 1.5·105, 1 ≤ k ≤ n) — the number of planks in the fence and the width of the hole for the piano. The second line contains the sequence of integers h1, h2, ..., hn (1 ≤ hi ≤ 100), where hi is the height of the i-th plank of the fence.
Output
Print such integer j that the sum of the heights of planks j, j + 1, ..., j + k - 1 is the minimum possible. If there are multiple suchj's, print any of them.
Sample Input
7 3 1 2 6 1 1 7 1
3
题意:
连续的m的宽度,想要通过,要求能过通过拆卸的木桩最小,我们可以将题意转化为连续的m,从哪一个位置开始m个的木桩和最小;
而且只有当他们的只要一块木桩的时候才可以通过;
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
#define N 150005
int a[N];
int n, m;
int main () {
while (scanf("%d%d",&n,&m) != EOF) {
for (int i = 0; i < n; i++)
scanf("%d",&a[i]);
int sum = 0;
for (int i =1 ; i <=m; i++)
sum += a[i];
int pos = 0;
int Min = sum;
for (int i = 1; i+(m-1)< n; i++) { // 连续木桩的下标不可以大于n
sum = sum - a[i-1];
sum = sum + a[i-1+m];
if (Min > sum){
Min = sum;
pos = i;
}
}
printf("%d\n",pos+1);
}
}