#RB0007. 牧场

牧场

题目描述

Steve 经营着一家牧场。牧场可以看成一个无限大的网格,Steve 将所有的行从上到下用整数 ...,2,1,0,1,2,......,−2,−1,0,1,2,... 编号,所有的列从左到右也用整数 ...,2,1,0,1,2,......,−2,−1,0,1,2,... 编号,行 ii 列 jj 的格子记为 (i,j)(i,j)。如果两个格子有一条公共边,则称两个格子相邻。

为了便于管理,Steve 在牧场中安装了一些栅栏,这些栅栏构成了 nn 个矩形,第 ii 个矩形的左上角为 (ai,bi)(a_i,b_i),右下角为 (ci,di)(c_i,d_i)ciai2c_i−a_i≥2dibi2d_i−b_i≥2),栅栏将占据第 aia_i 行和第 cic_i 行位于第 bib_i 至 did_i 列的格子以及第 bib_i 列和第 did_i 列位于第 aia_i 至 cic_i 行的格子。特别地,Steve 保证任意两个矩形占据的格子没有公共点。

Steve 可以乘坐骑往相邻的格子移动,不过如果要进入有栅栏占据的格子,则必须将该格子的栅栏门打开。由于开栅栏门是一件比较麻烦的事情,Steve 想知道从 (xS,yS)(xS,yS) 出发到达 (xT,yT)(xT,yT),至少要打开多少次栅栏门。

输入格式

输入第一行包含一个正整数 nn,表示栅栏构成的矩形个数。

接下来 nn 行,每行四个整数 ai,bi,ci,dia_i,b_i,c_i,d_i,每两个整数之间用一个空格隔开,描述一个左上角为 (ai,bi)(a_i,b_i),右下角为 (ci,di)(c_i,d_i) 的矩形。

最后一行包含四个整数 xS,yS,xT,yTxS,yS,xT,yT,每两个整数之间用一个空格隔开,表示起点和终点的位置。保证 (xS,yS)(xS,yS) 和 (xT,yT)(xT,yT) 未被任何栅栏占据。

输出格式

输出共一行,包含一个整数,表示打开栅栏门的最小次数。

输入样例 1

4
-6 -7 3 1 
0 3 4 6 
-4 -5 -2 -2 
-5 4 -3 6 
-3 -4 3 5 

输出样例 1

3

输入输出样例 1 说明

从 (3,4)(−3,−4) 到 (3,5)(3,5) 至少需要打开 33 个栅栏门。

输入样例 2

2
1 1 3 3 
1 5 3 7 
2 0 2 8 

输出样例 2

0

输入输出样例 2 说明

不用经过任何栅栏即可从 (2,0)(2,0) 走到 (2,8)(2,8)

数据规模与约定

对于 30%30\% 的数据,n4n≤40ai,bi,ci,di1000≤a_i,b_i,c_i,d_i≤1000xS,yS,xT,yT1000≤xS,yS,xT,yT≤100

对于 50%50\% 的数据,n500n≤5000ai,bi,ci,di2,0000≤a_i,b_i,c_i,d_i≤2,0000xS,yS,xT,yT2,0000≤xS,yS,xT,yT≤2,000

对于 80%80\% 的数据,n20,000n≤20,000

对于 100%100\% 的数据,n500,000n≤500,000109ai,bi,ci,di109−10^9≤a_i,b_i,c_i,d_i≤10^9ciai+2c_i≥a_i+2dibi+2d_i≥b_i+2109xS,yS,xT,yT109−10^9≤xS,yS,xT,yT≤10^9