Đây là lời giải của em, em chỉ tò mò muốn biết là còn cách nào khác để giải bài này không ạ?
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
namespace Question10
{
class Program
{
static void Main(String[] args)
{
int numCases = Int32.Parse(Console.ReadLine());
while (numCases > 0)
{
List<int> skillList = Console.ReadLine().Split(' ').Skip(1).Select(Int32.Parse).ToList();
skillList.Sort();
List<int> teams = new List<int>();
List<int> nextTeams = new List<int>();
int minimum = skillList.Count;
int i = 0;
while (i < skillList.Count)
{
int currentSkill = skillList[i];
while (i < skillList.Count && currentSkill == skillList[i])
{
int nextTeam = 0;
if (teams.Count > 0)
{
nextTeam = teams.Min();
teams.Remove(nextTeam);
}
nextTeams.Add(nextTeam + 1);
i++;
}
if (i < skillList.Count && skillList[i] - currentSkill == 1)
{
if (teams.Count > 0)
{
minimum = Math.Min(teams.Min(), minimum);
}
teams = nextTeams;
nextTeams = new List<int>();
}
else
{
if (teams.Count > 0)
{
minimum = Math.Min(teams.Min(), minimum);
}
if (nextTeams.Count > 0)
{
minimum = Math.Min(nextTeams.Min(), minimum);
}
teams = new List<int>();
nextTeams = new List<int>();
}
}
Console.WriteLine(minimum);
numCases--;
}
}
}
}