这份代码:
#include<bits/stdc++.h>
#define awa 2147483647
#define zhale exit(0)
#define re register
#define int long long
#define rint re int
using namespace std;
/*Shioiri Kukuri*/
typedef long long ll;
typedef unsigned long long ull;
typedef double qwq;
typedef pair<int,int> P;
typedef pair<ll,ll> llP;
#define rll re ll
#define rqwq re qwq
/*Otho Ai*/
template<class T>
void Swap(T &x,T &y)
{
T z=x;
x=y;
y=z;
}
//#define PairOP
#ifdef PairOP
template<class T1,class T2>
inline const pair<T1,T2> operator + (const pair<T1,T2> &p1,const pair<T1,T2> &p2){
return pair<T1,T2>(p1.first+p2.first,p1.second+p2.second);
}
template<class T1,class T2>
inline const pair<T1,T2> operator - (const pair<T1,T2> &p1,const pair<T1,T2> &p2){
return pair<T1,T2>(p1.first-p2.first,p1.second-p2.second);
}
#endif
//#define FastIO
#ifdef FastIO
char buf[1<<21],*p1,*p2;
#define getchar() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++)
#endif
template<class T>
T Read()
{
T x=0,f=1;
char ch=getchar();
while(ch<'0'||ch>'9')
{
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch>='0'&&ch<='9')
{
x=(x<<1)+(x<<3)+(ch^'0');
ch=getchar();
}
return x*f;
}
//int (*read)()=Read<int>;
ll (*readll)()=Read<ll>;
#define read Read<int>
const int N=1e6+5;
int n,m,cnta,cntb;
class Point{
public:
int x,y;
Point(){}
Point(rint _x,rint _y):x(_x),y(_y){}
inline friend bool operator < (const Point &a,const Point &b){
return a.x==b.x?a.y<b.y:a.x<b.x;
}
inline void In(){
cin>>x>>y;
}
}a[N],b[N],p[N];
inline void Init()
{
sort(a+1,a+1+n),sort(b+1,b+1+m);
vector<Point> tmp;a[0].y=awa;
for(rint i=1,last=0;i<=n;++i)
if(a[i].y<a[last].y) tmp.push_back(Point(a[i].x,a[i].y)),last=i;
cnta=tmp.size(),memset(a,0,sizeof(a));
for(rint i=1;i<=cnta;++i) a[i]=tmp[i];
reverse(b+1,b+1+m),p[++cntb]=b[1];
for(rint i=2;i<=m;++i) if(p[cntb].y<b[i].y) p[++cntb]=b[i];
reverse(p+1,p+1+cntb),memset(b,0,sizeof(b));
for(rint i=1;i<=cntb;++i) b[i]=p[i];
}
ll ans;
inline ll Val(Point a,Point b)
{
return (b.y-a.y)*(b.x-a.x);
}
inline void Solve(rint la,rint ra,rint lb,rint rb)
{
#define midb (lb+((rb-lb)>>1))
if(la>ra||lb>rb) return ;
ll maxans=-1e18,mida=0;
for(rint i=la;i<=ra;++i)
if((b[midb].x>a[i].x||b[midb].y>a[i].y)&&Val(a[i],b[midb])>maxans) maxans=Val(a[i],b[midb]),mida=i;
if(mida) Solve(la,mida,lb,midb-1),Solve(mida,ra,midb+1,rb),ans=max(ans,maxans);
}
inline int True()
{
//#define Freopen
#ifdef Freopen
freopen(".in","r",stdin);
freopen(".out","w",stdout);
#endif
//#define Clock
#ifdef Clock
rint STR=clock();
#endif
ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
cin>>n>>m;
for(rint i=1;i<=n;++i) a[i].In();
for(rint i=1;i<=m;++i) b[i].In();
Init(),Solve(1,cnta,1,cntb);
cout<<ans;
#ifdef Clock
rint END=clock();
printf("Time:%dms\n",int((END-STR)/(qwq)CLOCKS_PER_SEC*1000));
printf("Time:%ds\n",int((END-STR)/(qwq)CLOCKS_PER_SEC));
#endif
return (0-0);//q(0-0)p q(>-<)p
}
int Love=True();
signed main(){;}
正确答案:7462
本地devc++跑的答案是7462
luogu在线ide和loj给出的答案都是8930
很疑惑,求大神解答原因