USACO:Shaping Regions

#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);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值