有一个party,许多人来参加。一个记录仪记录下了每个人到达的时间 s_i 和离开的时间 e_i ,也就是说每个人在party的时间为 [ s_i, t_i ]。求出这个party 同一时刻最多接纳了多少人。例如:输入 arrl [] = {1, 2, 9, 5, 5} exit [] = {4, 5, 12, 9, 12};输出 3
代码如下:
void findMaxGuests(int arrl[], int exit[], int n)
{
sort(arrl, arrl+n);
sort(exit, exit+n);
int guests_in = 1, max_guests = 1, time = arrl[0];
int i = 1, j = 0;
while (i < n && j < n)
{
if (arrl[i] <= exit[j])
{
guests_in++;
if (guests_in > max_guests)
{
max_guests = guests_in;
time = arrl[i]; //记录容纳客人最多的时刻
}
i++;
}
else
{
guests_in--;
j++;
}
}
cout << "Maximum Number of Guests = " << max_guests << " at time "