using System.Collections.Generic;
public static void Main(string[] args)
Console.WriteLine(GetMaxNumberOfGuests(A,B));
public static int GetMaxNumberOfGuests(int[] arrivingTimes, int[] leavingTimes)
var arrivingCount = GetElementCount(arrivingTimes);
var leavingCount = GetElementCount(leavingTimes);
var hours = arrivingTimes.Concat(leavingTimes).Distinct();
var delta = hours.ToDictionary(h => h, _ => 0);
foreach (var hour in hours)
delta[hour] += arrivingCount.GetValueOrDefault(hour);
delta[hour] -= leavingCount.GetValueOrDefault(hour);
return CumulativeSum(delta.Values).Max();
private static Dictionary<T, int> GetElementCount<T>(IEnumerable<T> elements)
return elements.GroupBy(e => e).ToDictionary(g => g.Key, g => g.Count());
private static IEnumerable<int> CumulativeSum(IEnumerable<int> values)
foreach (var v in values)