交集大小
* * * *
拉格朗日计划
* * * *
交集大小

用左下角的坐标x, y、宽度w以及高度h来描述矩形。

按如下格式给出矩形1、2的参数,计算其交集的面积。

x1 y1 w1 h1 x2 y2 w2 h2


本题难度:



解答

交集也是矩形。

不难看出两个矩形上边界纵坐标的较小值减去下边界纵坐标的较大值就是交集的高。

同理两个矩形右边界横坐标的较小值减去左边界横坐标的较大值就是交集的宽。

若上述两个值中有任意一个小于0,则说明两者无交集,否则相乘即得结果。

最终代码只有三行。

代码长度:132字节 vs. 全站第一:108字节。

注:高和宽的判断逻辑完全相同,目前代码是重复的,但写成函数似乎只会增加长度。

import sys
m,n=min,max
for x in sys.argv[1:]:a,b,c,d,u,v,w,r=map(int,x.split());print(n(m(b+d,v+r)-n(b,v),0)*n(m(a+c,u+w)-n(a,u),0))