#include <stdio.h>
#include <stdlib.h>
typedef struct {
int start;
int end;
} Interval;
int compareIntervals(const void *a, const void *b) {
return ((Interval*)a)->end - ((Interval*)b)->end;
}
void intervalCover(Interval intervals[], int n) {
qsort(intervals, n, sizeof(Interval), compareIntervals);
Interval result[n];
int resultSize = 0;
Interval targetInterval = {-1, -1};
for (int i = 0; i < n; ++i) {
if (intervals[i].start > targetInterval.end) {
result[resultSize++] = intervals[i];
targetInterval = intervals[i];
}
}
printf("Selected Intervals:\n");
for (int i = 0; i < resultSize; ++i) {
printf("[%d, %d] ", result[i].start, result[i].end);
}
}
int main() {
Interval intervals[] = {{1, 8}, {2, 4}, {3, 4}, {5, 70}, {8, 100}};
int n = sizeof(intervals) / sizeof(intervals[0]);
intervalCover(intervals, n);
return 0;
}