Я хочу создать программу, которая подсчитывает, сколько гостей присутствует одновременно. Все гости имеют время прибытия и выхода. Я уже посчитал максимальное количество гостей, и это может дать мне один раз, когда это будет максимум. То, что я хочу, это все временные интервалы, когда присутствует максимальное количество гостей
Я пытался сделать это с помощью перекрывающегося метода, но он не совсем работает, возможно, потому что он сравнивает слишком много или слишком мало значений из списков. У меня есть два списка: прибытие и выход, где я добавляю значения, когда они записаны в моем консольном приложении.
Я попытался добавить время, приходящее из времени и времени2, в один список и отсортировать его, но он добавляет слишком много значений для некоторых тестовых входов.
int max = 1; int count = 1;
int i = 1; int j = 0;
long time = arrival[0]; long time2= dep[0];
while (i < n1 && j < n1) // n1 is the length of the input integer
{
if (arrival[i] < dep[j])
{
count++;
if (count >= max)
{
max = count;
time = arrival[i];
time2= dep[j];
}
// possible location of console.writeline(time1 + time2)
// somewhere here I would add time and time2 to a new list
i++;
}
else
{
count--;
j++;
}
} Console.WriteLine(max); Console.WriteLine(time1 + " " + time2);
Итак, скажем, мой ввод 5 гостей с интервалами: (12,30), (18,25), (25,40), (13,15) и (32,36) желаемый результат будет
2 // максимальное количество гостей в то время
13 15 // новая строка для каждого интервала
18 30
32 36
Но я не могу заставить его работать, он показывает только 32-36. Если я помещу console.writeline в возможное место, это даст мне: 13-15, 18-25, 25-30, 32-36. При других тестовых входах с большим количеством дубликатов (например, от 0 до 5 появляется более одного раза в списке), это дает мне слишком много интервалов.