Nটি ইন্টারভ্যাল [L, R] দেওয়া আছে। সব ইন্টারভ্যালের ইন্টারসেকশন (সাধারণ অংশ) বের করুন। ইন্টারসেকশন নেই হলে -1 রিটার্ন করুন।
প্রথম ইন্টারভ্যালকে ফাইনাল ইন্টারভ্যাল ধরে রেখে বাকিগুলোর সাথে ইন্টারসেকশন আপডেট করুন: L = max(L1,L2), R = min(R1,R2)।
উদাহরণ
#include <iostream>
#include <algorithm>
using namespace std;
struct Interval { int left, right; };
void findIntersection(Interval intervals[], int N) {
int l = intervals[0].left, r = intervals[0].right;
for (int i = 1; i < N; i++) {
if (intervals[i].left > r || intervals[i].right < l) {
cout << -1; return;
}
l = max(l, intervals[i].left);
r = min(r, intervals[i].right);
}
cout << "{" << l << ", " << r << "}";
}
int main() {
Interval intervals[] = {{1,6},{2,8},{3,10},{5,8}};
findIntersection(intervals, 4);
return 0;
}
আউটপুট
{5, 6}