Go: package main

import "fmt"

func main() {

	for true {
		var n, k int
		fmt.Scan(&n, &k)

		if n == 0 && k == 0 {
			return
		}
		
		a := make([]int, n)
		ans := make([]int, n)
		for i := 0; i < n; i++ {
			fmt.Scan(&a[i])
			if i == 0 {
				ans[i] = a[i]
			} else {
				ans[i] = ans[i-1] + a[i]
			}
		}
		max := 0
		for i := k; i < n; i++ {
			t := ans[i] - ans[i-k]
			if max < t {
				max = t
			}
		}
		fmt.Println(max)
	}
}

C++: #include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<cassert>
#include<iostream>
#include<sstream>
#include<string>
#include<vector>
#include<queue>
#include<set>
#include<map>
#include<utility>
#include<numeric>
#include<algorithm>
#include<bitset>
#include<complex>

using namespace std;

typedef long long Int;
typedef vector<int> vint;
typedef pair<int,int> pint;
#define mp make_pair

template<class T> void pv(T a, T b) { for (T i = a; i != b; ++i) cout << *i << " "; cout << endl; }
template<class T> void chmin(T &t, T f) { if (t > f) t = f; }
template<class T> void chmax(T &t, T f) { if (t < f) t = f; }
int in() { int x; scanf("%d", &x); return x; }

int inp[1000000];
	
int main() {
	int n,m;
	while(n=in(),m=in()){
		int i;
		for(i=0;i<n;i++){
			cin>>inp[i];
		}
		Int max=-2000000000;
		for(i=0;i<=n-m;i++){
			Int sum=0;
			int k;
			for(k=0;k<m;k++){
				sum+=inp[i+k];
				//cout<<sum<<endl;
			}
			if(max<sum)max=sum;
		}
		cout<<max;
	}
	return 0;
}

C++: #include<iostream>
#include<cstdio>
using namespace std;
int a[100010];
long long ans,maxx;
int main()
{
	int i,n,m;
	while(cin>>n>>m&&n!=0&&m!=0)
	{
		ans=-9999999,maxx=0;
		for(i=1;i<=n;i++)
		{
			cin>>a[i];
			if(i<m)maxx+=a[i];
			else if(i>=m)
			{ 
			    maxx+=a[i];
			    if(maxx>ans)ans=maxx;
			    maxx-=a[i-m+1];
			}
		}
		cout<<ans<<endl;
	}
	return 0;
}

C++: #include <iostream>
#include <string>
#include <vector>
#include <queue>
#include <stack>
#include <map>
#include <algorithm>
#include <sstream>
#include <cmath>
#include <set>
#include <cstdio>
#include <iomanip>

using namespace std;

#define REP(i,n) for(int (i)=0;(i)<(int)(n);(i)++)
#define RREP(i,n) for(int (i)=(int)(n)-1;(i)>=0;(i)--)
#define REMOVE(Itr,n) (Itr).erase(remove((Itr).begin(),(Itr).end(),n),(Itr).end())
#define PB_VEC(Itr1,Itr2) (Itr1).insert((Itr1).end(),(Itr2).begin(),(Itr2).end())
#define UNIQUE(Itr) sort((Itr).begin(),(Itr).end()); (Itr).erase(unique((Itr).begin(),(Itr).end()),(Itr).end())

typedef long long ll;


int main(){
    
    
    while(true){
    int n,k;
    cin>>n>>k;
        if(n==0&&k==0)break;
    vector<ll> a(n);
    REP(i,n)cin>>a[i];
    
    ll sum=0;
    REP(i,k)sum+=a[i];
    
    ll ans=sum;
    for(int i=k;i<n;i++){
        sum-=a[i-k];
        sum+=a[i];
        ans=max(ans,sum);
    }
    
    cout<<ans<<endl;
    
    }
    return 0;
}

C++: #include<iostream>
main(){for(int n,k,a[100000],s,M,i;std::cin>>n>>k,n;printf("%d\n",M)){for(i=s=0;i<n;i++<k&&(M=s+=a[i-1]))std::cin>>a[i];for(i=k;i<n;M<s&&(M=s))s+=a[i]-a[i++-k];}}

C++: #include<vector>
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include <iostream>
#include <algorithm>
#include <map>
#include <cmath>
#define INF 100000000000000
using namespace std;
typedef long long llong;

//int isalpha(char ch): ch がアルファベットなら true を返す
//int isdigit(char ch): ch が数字なら true を返す
//int islower(char ch): ch が小文字なら true を返す
//int isupper(char ch): ch が大文字なら true を返す
//int tolower(char ch): ch の小文字を返す
//int toupper(char ch): ch の大文字を返す

//string型
//size()	文字数を返す
//Insert()	（指定した場所に）文字・文字列を挿入する
//erase()	（指定した場所の）文字・文字列を削除する
//clear()	すべての文字を削除する
//substr()	文字列の（指定した）部分文字列を返す
//replace()	（指定した）部分文字列を新しい文字列に置換する
//文字列の比較は、<=や==などを使え
//replace関数を使い、簡単に文字列を置換
//リバース関数：reverse(str.begin(), str.end());
//map<type, type> dict;で宣言
//グラフ理論用変数
//vector<vector<llong> > graph(N);

//ソート
//降順sort(v.begin(), v.end(), std::greater<Type>());

//大文字から小文字へんかん
//w[i] = w[i]-'A'+'a';

//vector
//assignメソッド　引数：サイズ、値
//与えられたサイズと値でvectorを初期化する

int main(){
    llong n,k;
    vector<llong> A(100000);
    vector<llong> S(100000, 0);
    llong temp;
    llong maxv;

    while(1){
        cin >> n >> k;
        if(n==0  && k==0){
            break;
        }
        for(int i=0; i<n; i++){
                cin >> A[i];
        }
        maxv = INF*-1;
        for(int i=0; i<n; i++){
            S[i+1] = S[i] + A[i];
        }
        for(int i=0; i<n-k+1; i++){
            maxv = max(maxv, S[i+k]-S[i]);
        }
        cout << maxv << endl;
    }
    return 0;
}

//00:81 s

C++: #include <iostream>
#include <algorithm>
using namespace std;
 
int main(){
    int n,k;
    while(cin >> n >> k, n&k){
        int num[n],total=0;
        for(int i=0;i<n;i++) cin>>num[i];
        for(int i=0;i<k;i++) total+=num[i];
        int ans=total;
        for(int i=0;i<n-k;i++){
            total+=num[i+k]-num[i];
            ans=max(ans,total);
        }
            cout<<ans<<endl;
    }
    return 0;
}

C++: #include <iostream>
using namespace std;

int a[100002];

int main(void){
	int n,k;

	while(cin>>n>>k,n){
		for(int i=0;i<n;i++) cin>>a[i];

		int left=0, right=0, sum=0, ans=-999999999;

		while(right<n){
			while(right-left<k) sum += a[right++];
			ans = max(ans,sum);
			sum -= a[left++];
		}

		cout<<ans<<endl;
	}

	return 0;
}