#include<iostream>
#include<cstring>
#include<cstdio>
#include<algorithm>
#include<queue>
#define mp make_pair
using namespace std;
typedef long long lng;
typedef pair<int, int> pii;
struct seg
{
int l,r;
seg(){}
seg(int x,int y){l=x,r=y;}
};
int Min(int x,int y){if(x<y) return x;return y;}
int Max(int x,int y){if(x>y) return x;return y;}
struct rec
{
seg w,h;
int col;
rec(){}
rec(seg x,seg y,int cc){w=x,h=y,col=cc;}
};
bool is_1(seg x,seg y)
{
return x.l<=y.l?y.l<x.r:x.l<y.r;
}
bool is_2(rec x,rec y)
{
return is_1(x.w,y.w)&&is_1(x.h,y.h);
}
seg seek_insect(seg x,seg y)
{
return seg(Max(x.l,y.l),Min(x.r,y.r));
}
vector<rec> c,now;
void f(rec x,rec &y) //x changed
{
if(is_2(x,y))
{
seg w1=seek_insect(x.w,y.w),h1=seek_insect(x.h,y.h);
if(w1.l>x.w.l){c.push_back(rec(seg(x.w.l,w1.l),x.h,x.col));}
if(w1.r<x.w.r){c.push_back(rec(seg(w1.r,x.w.r),x.h,x.col));}
if(h1.l>x.h.l){c.push_back(rec(w1,seg(x.h.l,h1.l),x.col));}
if(h1.r<x.h.r){c.push_back(rec(w1,seg(h1.r,x.h.r),x.col));}
}
else c.push_back(x);
}
USACO:Shaping Regions
最新推荐文章于 2019-02-03 23:33:52 发布