using System; using System.Collections.Generic; using System.IO; using System.Linq; class Solution { public class SwitchSum { public int Index; public long Cost; public bool StillOn; } static void Main(String[] args) { /* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution */ int[] nk = Array.ConvertAll(Console.ReadLine().Split(' '), Int32.Parse); int k = nk[1]; int[] c = Array.ConvertAll(Console.ReadLine().Split(' '), Int32.Parse); List ss = new List(); for (int i=0; i= nk[0]) continue; cSum += c[i+j]; } ss.Add(new SwitchSum(){ Index = i, Cost = cSum, StillOn = true}); } //Console.WriteLine(String.Join(" ", ss.Select(s => s.Cost).ToArray())); List sso = ss.OrderByDescending(s => s.Cost).ToList(); long result = 0; for (int i=0; i s.StillOn).ToArray())); int ix = sso[i].Index; result += c[ix]; //Console.WriteLine($"Switch {ix}"); for (int j=-k; j<=k; j++) { if (ix+j < 0) continue; if (ix+j >= nk[0]) continue; ss[ix+j].StillOn = false; } //Console.WriteLine(String.Join(" ", ss.Select(s => s.StillOn).ToArray())); } Console.WriteLine(result); } }