T1
题目描述
小 A 生活在一个庄园中。庄园可以看成一个平面,我们将这个平面划分为单元格。每对整数 (x,y) 对应一个单元格,我们称这个单元格为单元格 (x,y)。每个单元格要么是空地,要么是墙体。
现在给出两个长为 n 的正整数序列:l1,l2,…,ln 和 u1,u2,…,un。其中对任意的 i=1,2,…,n 都有 li≤ui。所有的单元格 (x,y) (1≤x≤n,lx≤y≤ux) 都是空地,所有其他的单元格都是墙体。
当小 A 站在空地 (x,y) 上时,他可以做出下列动作之一:
如果单元格 (x+1,y) 是空地,移动到单元格 (x+1,y)。
如果单元格 (x−1,y) 是空地,移动到单元格 (x−1,y)。
如果单元格 (x,y+1) 是空地,移动到单元格 (x,y+1)。
如果单元格 (x,y−1) 是空地,移动到单元格 (x,y−1)。
庄园当然是连通的,即小 A 可以通过重复这些动作在任两个空地之间走动。
小 A 喜欢在庄园里闲逛,但是庄园太大了,他不希望走太长的距离。他进行了 q 次询问,对于第 i 次询问,给出四个正整数 sx,i,sy,i,tx,i,ty,i。请计算从单元格 (sx,i,sy,i) 走到单元格 (tx,i,ty,i) 至少需要移动几次。保证每次询问给出的两个单元格都是空地。
输入格式
从标准输入读入数据。
输入的第一行包含一个正整数 n。
接下来的 n 行每行包含两个正整数 li,ui。
输入的第 n+2 行包含一个正整数 q。
接下来的 q 行每行包含四个正整数 sx,i,sy,i,tx,i,ty,i。
输出格式
输出到标准输出。
对于每次询问输出一行一个整数表示答案。
思路
代码
#include<bits/stdc++.h>
using namespace std;
const int N=5e3+9;
long long n,t,l[N],r[N],sx,sy,ex,ey,ans;
int main(){
cin>>n;
for(int i=1;i<=n;i++) cin>>l[i]>>r[i];
cin>>q;
while(q--)