题目描述:https://pycoder.blog.csdn.net/article/details/124994936
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
struct Time {
int start;
int end;
};
struct Interviewer {
int num; // 用于处理面试官有面试次数的情况
int end_time;
};
int cmp(const void *a, const void *b)
{
struct Time *aa = (struct Time *)a;
struct Time *bb = (struct Time *)b;
return (aa->start - bb->start);
}
int main(void)
{
int n;
struct Time time[1000];
int interviewer_num = 0;
struct Interviewer interviewer[100];
memset(interviewer, 0, sizeof(struct Interviewer));
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d %d\n", &time[i].start, &time[i].end);
}
qsort(time, n, sizeof(struct Time), cmp);
int flag = 0;
for (int i = 0; i < n; i++) {
/* 从现有的面试官里面选 */
for (int j = 0; j < interviewer_num; j++) {
if (interviewer[j].end_time <= time[i].start) {
interviewer[j].num++;
interviewer[j].end_time = time[i].end;
flag = 1;
break;
}
}
/* 现有的面试官都没空 */
if (flag == 0) {
interviewer[interviewer_num].end_time = time[i].end;
interviewer[interviewer_num].num = 1;
interviewer_num++;
}
}
printf("%d\n", interviewer_num);
return 0;
}