交集也是矩形。
不难看出两个矩形上边界纵坐标的较小值减去下边界纵坐标的较大值就是交集的高。
同理两个矩形右边界横坐标的较小值减去左边界横坐标的较大值就是交集的宽。
若上述两个值中有任意一个小于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))
|