#include <bits/stdc++.h>
using namespace std;
const int MAXN=100001;
int n,m1,m2;
int s;
struct times{
int begin,end;
};
int total(times t[],int m,int q){
int tt=0;
int a[q]={};
if(q==0)return 0;
for(int i=0;i<m;i++){
for(int j=0;j<q;j++){
if(a[j]<t[i].begin){
a[j]=t[i].end;
tt++;
break;
}
}
}
return tt;
}
times t1[MAXN],t2[MAXN];
bool cmp(times a,times b){
return a.begin<b.begin;
}
int main(){
cin.sync_with_stdio(false);
cin>>n>>m1>>m2;
for(int i=0;i<m1;i++){
cin>>t1[i].begin>>t1[i].end;
}
for(int i=0;i<m2;i++){
cin>>t2[i].begin>>t2[i].end;
}
sort(t1,t1+m1,cmp);
sort(t2,t2+m2,cmp);
for(int i=0;i<=n;i++){
s=max(s,total(t1,m1,i)+total(t2,m2,n-i));
}
cout<<s<<endl;
}
感谢!(时间复杂度太高)