#include <stdio.h>
#include <stdlib.h>
typedef struct {
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;
}
int intervalCover(Interval intervals[], int numIntervals, Interval target) {
int count = 0;
int targetEnd = target.end;
int i;
qsort(intervals, numIntervals, sizeof(Interval), compare);
for (i = 0; i < numIntervals; i++) {
if (intervals[i].start > targetEnd) {
break;
}
if (intervals[i].end >= target.start) {
count++;
targetEnd = intervals[i].end;
}
}
return count;
}
int main() {
Interval intervals[] = {{1, 4}, {2, 5}, {7, 9}, {8, 11}};
int numIntervals = sizeof(intervals) / sizeof(intervals[0]);
Interval target = {2, 10};
int minimumIntervals = intervalCover(intervals, numIntervals, target);
printf("Minimum number of intervals needed: %d\n", minimumIntervals);
return 0;
}