using
System;
using
System.Collections.Generic;
class
Program
{
static
int
CompareMeetings(List<
int
> a, List<
int
> b)
{
if
(a[0] != b[0])
return
a[0].CompareTo(b[0]);
return
a[1].CompareTo(b[1]);
}
static
void
MaxConcurrentMeetingSlot(List<List<
int
>> meetings)
{
meetings.Sort(CompareMeetings);
SortedSet<
int
> minHeap =
new
SortedSet<
int
>();
minHeap.Add(meetings[0][1]);
int
maxLen = 0, maxStart = 0, maxEnd = 0;
foreach
(
var
meeting
in
meetings)
{
while
(minHeap.Count > 0 && meeting[0] >= minHeap.Min)
minHeap.Remove(minHeap.Min);
minHeap.Add(meeting[1]);
if
(minHeap.Count > maxLen)
{
maxLen = minHeap.Count;
maxStart = meeting[0];
maxEnd = minHeap.Min;
}
}
Console.WriteLine(maxStart +
" "
+ maxEnd);
}
static
void
Main()
{
List<List<
int
>> meetings =
new
List<List<
int
>>()
{
new
List<
int
> { 100, 200 },
new
List<
int
> { 50, 300 },
new
List<
int
> { 300, 400 }
};
MaxConcurrentMeetingSlot(meetings);
}
}