using System.Collections.Generic;
public static void Main()
int[] arr = {3,3,3,3,5,5,5,2,2,7};
Console.WriteLine(MinSetSize(arr));
private static int MinSetSize(int[] arr) {
if(arr == null || arr.Length <= 0)
IDictionary<int, int> numCounts = new Dictionary<int, int>();
int setSize = 0, minSetSize = 0;
if(numCounts.ContainsKey(num))
var orderedCounts = numCounts.OrderByDescending(x => x.Value).ToDictionary(x => x.Key, x => x.Value);
foreach(var num in orderedCounts.Keys)
setSize += orderedCounts[num];
if(setSize >= arr.Length / 2)