#include <stdio.h>
#include <stdlib.h>
typedef struct Interval {
int start;
int end;
} Interval;
int compare(const void *a, const void *b) {
Interval *intervalA = (Interval *)a;
Interval *intervalB = (Interval *)b;
return intervalA->end - intervalB->end;
}
void intervalScheduling(Interval intervals[], int size) {
qsort(intervals, size, sizeof(Interval), compare);
int lastSelected = 0;
printf("Selected Interval: [%d, %d]\n", intervals[lastSelected].start, intervals[lastSelected].end);
for (int i = 1; i < size; i++) {
if (intervals[i].start >= intervals[lastSelected].end) {
printf("Selected Interval: [%d, %d]\n", intervals[i].start, intervals[i].end);
lastSelected = i;
}
}
}
int main() {
Interval intervals[] = {{1, 4}, {3, 5}, {0, 6}, {5, 7},
{3, 8}, {5, 9}, {6, 10}, {8, 11},
{8, 12}, {2, 13}, {12, 14}};
int size = sizeof(intervals) / sizeof(intervals[0]);
intervalScheduling(intervals, size);
return 0;
}