CF2152B

Solution

首先很明显 $K$ 要背朝 $D$ 的方向逃跑,那么这样就一定会先到达一个边界。
这个时候 $K$ 就可以横着走了,但是要注意 $D$ 是可以斜着走的。
所以横着走是没有用的,因为先竖着再横着其实步数和斜着的 $D$ 其实是一样的。
我们只需要找出那个最远的离边界的距离就好了。

Code

#include<bits/stdc++.h>
using namespace std;
using LL=long long;
LL n,a,b,c,d;
void solve(){
    cin>>n >> a >> b >> c >> d;
    bool l=(a<c),u=(b<d);
    LL dis=0;
    if(l&&a!=c) dis=max(dis,c);
    if(!l&&a!=c) dis=max(dis,n-c);
    if(u&&b!=d) dis=max(dis,d);
    if(!u&&b!=d) dis=max(dis,n-d);
    cout << dis << endl;
}
int main(){
    int t;
    cin >> t;
    while(t--){
        solve();
    }
    return 0;
}