82pts 求助 pls
查看原帖
82pts 求助 pls
554145
Night_sea_64楼主2024/1/26 17:01

提交记录

#include<iostream>
#include<set>
using namespace std;
int n,m;
long long ans;
struct node{int xa,ya,xb,yb;};
bool operator<(const node &x,const node &y)
{
    if(x.xb<=y.xa)return 1;
    else if(y.xb<=x.xa)return 0;
    if(x.yb<=y.ya)return 1;
    else if(y.yb<=x.ya)return 0;
    return 0;
}
multiset<node>s;
int main()
{
    cin>>n>>m;
    m/=2;
    for(int i=1;i<=n;i++)
    {
        int x,y;
        cin>>x>>y;
        int xa=x-m,ya=y-m,xb=x+m,yb=y+m;
        auto p=s.find({xa,ya,xb,yb});
        if(p!=s.end())
        {
            if(ans)
            {
                cout<<-1<<endl;
                return 0;
            }
            int xc=p->xa,yc=p->ya,xd=p->xb,yd=p->yb;
            s.erase(p);
            if(s.find({xa,ya,xb,yb})!=s.end())
            {
                cout<<-1<<endl;
                return 0;
            }
            s.insert({xc,yc,xd,yd});
            ans=1ll*min(xb-xc,xd-xa)*min(yb-yc,yd-ya);
        }
        s.insert({x-m,y-m,x+m,y+m});
    }
    cout<<ans<<endl;
    return 0;
}
2024/1/26 17:01
加载中...