这个n*n的莫名其妙A了
#include<bits/stdc++.h>
using namespace std;
int n,m1,m2,num1=1,num2=1,maxn,ans;
struct sd{
int k,e;
}a1[100011],b1[100011];
struct sl{
int s,e;
}a[100011],b[100011];
int cmp(sl a,sl b){
return a.s<b.s;
}
int main(){
cin>>n>>m1>>m2;
for(int i=1;i<=m1;i++){
cin>>a[i].s>>a[i].e;
}
for(int i=1;i<=m2;i++){
cin>>b[i].s>>b[i].e;
}
sort(a+1,a+m1+1,cmp);
sort(b+1,b+m2+1,cmp);
a1[1].k=a[1].e;
a1[1].e=1;
b1[1].k=b[1].e;
b1[1].e=1;
int j;
for(int i=2;i<=m1;i++){
for(j=1;j<=num1;j++){
if(a1[j].k<a[i].s){
a1[j].e++;
a1[j].k=a[i].e;
break;
}
}
if(j==num1+1){
num1++;
a1[num1].e=1;
a1[num1].k=a[i].e;
}
}
for(int i=2;i<=m2;i++){
for(j=1;j<=num2;j++){
if(b1[j].k<b[i].s){
b1[j].e++;
b1[j].k=b[i].e;
break;
}
}
if(j==num2+1){
num2++;
b1[num2].e=1;
b1[num2].k=b[i].e;
}
}
for(int i=1;i<=n;i++)maxn+=a1[i].e;
ans=maxn;
for(int i=1;i<=n;i++){
maxn=maxn+b1[i].e-a1[n-i+1].e;
ans=max(ans,maxn);
}
cout<<ans;
}