代码如下:
//#include <cstdio>
#include <iostream>
#include <cctype>
#include <algorithm>
using namespace std;
int n,m1,m2,ans;
int h[100010],r[100010][2];
struct p
{
int ar;
int le;
} plane[100010];//存时间
int read()
{
int s=0,f=1;
char ch=getchar();
while(!isdigit(ch))
{
if(ch=='-') f=-1;
ch=getchar();
}
while(isdigit(ch))
{
s=s*10+ch-'0';
ch=getchar();
}
return s*f;
}
void write(int x)
{
if(x < 0)
{
putchar('-');
x=-x;
}
if(x>9) write(x/10);
putchar(x%10+'0');
return;
}
bool cmp(p n1,p n2)
{
return n1.ar<n2.ar;
}
int main()
{
//freopen("airport.in","r",stdin);
//freopen("airport.out","w",stdout);
n=read();
m1=read();
m2=read();
for(int i=1;i<=m1+m2;i++)
{
plane[i].ar=read();
plane[i].le=read();
}
sort(plane+1,plane+m1+1,cmp);
sort(plane+m1+1,plane+m1+m2+1,cmp);
bool b=1;
int c=1;
int l;
while(b && c<=n)
{
b=0;
l=0;
for(int i=1;i<=m1;i++)
{
if(plane[i].ar>l && h[i]==0)
{
h[i]=c;//标记
r[c][0]++;
l=plane[i].le;
b=1;
}
}
c++;
r[c][0]+=r[c-1][0];
}
b=1;
c=1;
while(b && c<=n)
{
b=0;
l=0;
for(int i=m1+1;i<=m1+m2;i++)
{
if(plane[i].ar>l && h[i]==0)
{
h[i]=c;
r[c][1]++;
l=plane[i].le;
b=1;
}
}
c++;
r[c][1]+=r[c-1][1];
}
for(int i=0;i<=n;i++) ans=max(ans,r[i][0]+r[n-i][1]);
write(ans);
return 0;
}