#include<bits/stdc++.h>
using namespace std;
const int MAXN = 100005;
struct time_fl {
int st,end;
};
vector<time_fl> ina;
time_fl na_done[MAXN];
int lnum_na[MAXN];
int sum_na[MAXN];
vector<time_fl> abr;
time_fl ab_done[MAXN];
int lnum_ab[MAXN];
int sum_ab[MAXN];
bool cmp(const time_fl &l, const time_fl &r){
return l.st < r.st;
}
bool cmp2(const int &l,const int &r){
return l > r;
}
int n;
int fl_ina,fl_abr;
int main(){
scanf("%d%d%d", &n, &fl_ina, &fl_abr);
for(int i = 1;i <= fl_ina;i++){
int st,end;
scanf("%d%d", &st, &end);
ina.push_back({st,end});
}
sort(ina.begin(),ina.end(),cmp);
for(int i = 1;i <= fl_abr;i++){
int st,end;
scanf("%d%d", &st, &end);
abr.push_back({st,end});
}
sort(abr.begin(),abr.end(),cmp);
int length = -1;
for(time_fl g : ina){
int cnt = 0;
for(time_fl t : na_done){
if(g.st > t.end){
break;
}
cnt++;
}
length = max(length,cnt);
lnum_na[cnt]++;
na_done[cnt].st = g.st;
na_done[cnt].end = g.end;
}
for(int i = 1;i <= length + 1;i++){
sum_na[i] = sum_na[i - 1] + lnum_na[i - 1];
}
int len_na = length;
length = -1;
for(time_fl g : abr){
int cnt = 0;
for(time_fl t : ab_done){
if(g.st > t.end){
break;
}
cnt++;
}
length = max(length,cnt);
lnum_ab[cnt]++;
ab_done[cnt].st = g.st;
ab_done[cnt].end = g.end;
}
for(int i = 1;i <= length + 1;i++){
sum_ab[i] = sum_ab[i - 1] + lnum_ab[i - 1];
}
int ans = -1;
for(int i = 0;i <= n ;i++){
int af = n - i;
if(af > length + 1){
af = length + 1;
}
ans = max(ans,sum_na[i] + sum_ab[af]);
}
printf("%d", ans);
return 0;
}
链接: 我的测评记录