using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.Collections;
using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
using System.Globalization;
using System.Runtime.Serialization;
using System.Text.RegularExpressions;
static int[] trailingDaysOccurences = new int[201];
static int[] trailingDaysSorted;
static int leftMedianIndex;
static int rightMedianIndex;
static int leftMedianValue;
static int rightMedianValue;
static int activityNotifications(int[] expenditure, int d)
if (expenditure.Count() < d)
trailingDaysSorted = new int[d + 1];
leftMedianIndex = even ? (d / 2) - 1 : d/2;
rightMedianIndex = even ? d / 2 : leftMedianIndex;
var td = new Queue<int>(expenditure.Take(d));
trailingDaysOccurences[t]++;
for (int i = d; i < expenditure.Length; i++)
var median = even ? (decimal)(leftMedianValue + rightMedianValue) / 2 : leftMedianValue;
if (expenditure[i] >= (2 * median))
var dequeueVal = td.Dequeue();
td.Enqueue(expenditure[i]);
trailingDaysOccurences[dequeueVal]--;
trailingDaysOccurences[expenditure[i]]++;
private static void computeMedian(Queue<int> td)
for(int i= 0; i < trailingDaysOccurences.Length; i++)
cumulitiveSum += trailingDaysOccurences[i];
if (cumulitiveSum > leftMedianIndex && leftMedianValue == 0)
if (cumulitiveSum > rightMedianIndex)
static void Main(string[] args)
string[] nd = "9 5".Split(' ');
int n = Convert.ToInt32(nd[0]);
int d = Convert.ToInt32(nd[1]);
int[] expenditure = Array.ConvertAll("2 3 4 2 3 6 8 4 5".Split(' '), expenditureTemp => Convert.ToInt32(expenditureTemp));
int result = activityNotifications(expenditure, d);
Console.WriteLine(result);