#include <iostream>
#include <algorithm>
using namespace std;
struct Interval {
int start, end;
};
bool compareIntervals(const Interval& a, const Interval& b) {
return a.end < b.end;
}
int maxNonOverlappingIntervals(Interval intervals[], int n) {
if (n <= 0) {
return 0;
}
sort(intervals, intervals + n, compareIntervals);
int count = 1;
int end = intervals[0].end;
for (int i = 1; i < n; ++i) {
if (intervals[i].start > end) {
++count;
end = intervals[i].end;
}
}
return count;
}
int main() {
Interval intervals[] = {{6, 8}, {2, 4}, {3, 5}, {1, 5}, {5, 9}, {8, 10}};
int n = sizeof(intervals) / sizeof(intervals[0]);
int result = maxNonOverlappingIntervals(intervals, n);
cout << "Maximum non-overlapping intervals: " << result << endl;
return 0;
}