RT,怎么都找不出是哪里的问题,求大佬帮忙找找
#include<iostream>
#include<cstdio>
#include<queue>
#include<algorithm>
#define M(x,y) make_pair(x,y)
using namespace std;
struct fi{
int a,b;
}fli[100010];
bool cmp1(fi x,fi y)
{
return x.a<y.a;
}
struct fd{
int a,b;
}fld[100010];
bool cmp2(fd x,fd y)
{
return x.a<y.a;
}
int ni[100010],nd[100010],n,m1,m2;
priority_queue< pair<int,int> > qi;
priority_queue< pair<int,int> > qd;
priority_queue< int > ai;
priority_queue< int > ad;
int nqi=0,nqd=0;
int main()
{
// freopen("airport.in","r",stdin);
// freopen("airport.out","w",stdout);
int a,b,x,y;
cin>>n>>m1>>m2;
for(int i=1;i<=m1;++i)
{
cin>>fli[i].a>>fli[i].b;
}
sort(fli+1,fli+m1+1,cmp1);
for(int i=1;i<=m2;++i)
{
cin>>fld[i].a>>fld[i].b;
}
sort(fld+1,fld+m2+1,cmp2);
for(int i=1;i<=m1;++i)
{
if(qi.empty())
{
qi.push(M(-fli[i].b,1));
ni[1]++;
nqi++;
}
else
{
x=-qi.top().first,y=qi.top().second;
while(x<fli[i].a && !qi.empty())
{
ai.push(-y);
qi.pop();
x=-qi.top().first,y=qi.top().second;
}
if(!ai.empty())
{
y=-ai.top();
qi.push(M(-fli[i].b,y));
ni[y]++;
ai.pop();
}
else
if(nqi<n)
{
nqi++;
qi.push(M(-fli[i].b,nqi));
ni[nqi]++;
}
else
continue;
}
}
for(int i=1;i<=m2;++i)
{
if(qd.empty())
{
qd.push(M(-fld[i].b,1));
nd[1]++;
nqd++;
}
else
{
x=-qd.top().first,y=qd.top().second;
while(x<fld[i].a && !qi.empty())
{
ad.push(-y);
qd.pop();
x=-qd.top().first,y=qd.top().second;
}
if(!ad.empty())
{
y=-ad.top();
qd.push(M(-fld[i].b,y));
nd[y]++;
ad.pop();
}
else
if(nqd<n)
{
nqd++;
qd.push(M(-fld[i].b,nqd));
nd[nqd]++;
}
else
continue;
}
}
int maxx=0;
for(int i=1;i<=n;++i)
{
ni[i]+=ni[i-1];
nd[i]+=nd[i-1];
}
for(int i=0;i<=n;++i)
{
maxx=max(maxx,ni[i]+nd[n-i]);
}
cout<<maxx;
return 0;
}