rt,我不需要满分,TLE 我懂,WA 我不懂,实在调不出来错哪了啊 QwQ
大佬们应该能看得懂吧()
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1e5 + 10;
int n, m1, m2;
struct Node {
int l, r;
} a[N], b[N];
bool vis[N], vix[N];
bool cmp(Node x, Node y) {
if (x.l != y.l)
return x.l < y.l;
return x.r < y.r;
}
int Calc(int x) {
int pos = 1, ans = 0;
for (int i = 1; i <= m1; i++)
if (i <= x)
{ ans++; vis[i] = true; continue; }
else {
bool flag = false;
for (int j = pos; j < i; j++)
if (vis[j] && a[j].r <= a[i].l)
{ flag = true; pos = j + 1; vis[i] = true; break; }
if (flag) ans++;
}
return ans;
}
int Calx(int x) {
int pos = 1, ans = 0;
for (int i = 1; i <= m2; i++)
if (i <= x)
{ ans++; vix[i] = true; continue; }
else {
bool flag = false;
for (int j = pos; j < i; j++)
if (vix[j] && b[j].r <= b[i].l)
{ flag = true; pos = j + 1; vix[i] = true; break; }
if (flag) ans++;
}
return ans;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(0), cout.tie(0);
cin >> n >> m1 >> m2;
for (int i = 1; i <= m1; i++)
cin >> a[i].l >> a[i].r;
sort(a + 1, a + 1 + m1, cmp);
for (int i = 1; i <= m2; i++)
cin >> b[i].l >> b[i].r;
sort(b + 1, b + 1 + m2, cmp);
int ans = 0;
for (int i = 0; i <= n; i++) {
memset(vis, false, sizeof vis);
memset(vix, false, sizeof vix);
ans = max(ans, Calc(i) + Calx(n - i));
}
cout << ans;
return 0;
}