记录两个组内区间l值的最小最大值,r值得最小最大值即可。
#include <iostream>
#include <string>
#include <cstdio>
#include <algorithm>
#include <vector>
#include <stack>
#include <queue>
#define MAX 100005
#define mod 998244353ll
#define INF 0x3f3f3f3f
#define ll long long
using namespace std;
int main() {
freopen("a.txt", "r", stdin);
freopen("b.txt", "w", stdout);
int n, m, l, r, a1, b1, a2, b2;
cin >> n;
a1 = b2 = INF, b1 = a2 = -1;
for (int i = 0; i < n; ++i) {
scanf("%d%d", &l, &r);
a1 = min(a1, r);
a2 = max(a2, l);
}
cin >> m;
for (int i = 0; i < m; ++i) {
scanf("%d%d", &l, &r);
b1 = max(b1, l);
b2 = min(b2, r);
}
if (b1 - a1 > a2 - b2) {
if (b1 - a1 > 0)cout << b1 - a1 << endl;
else cout << 0 << endl;
}
else {
if (a2 - b2 > 0) cout << a2 - b2 << endl;
else cout << 0 << endl;
}
return 0;
}