#include<stdio.h>
#include<stdlib.h>
#define min(a,b) (a>b?b:a)
int main(){
long long x,y,w,s,e,n;
scanf("%lld%lld%lld%lld%lld%lld",&x,&y,&w,&s,&e,&n);
if(x<=w&&x>=e)
printf("%lld\n",min(labs(y-n),labs(y-s)));
else if(y<=n&&y>=s)
printf("%lld\n",min(labs(x-w),labs(x-e)));
else{
long long dis=labs(x-w)+labs(y-s);
long long dis2=labs(x-e)+labs(y-s);
long long dis3=labs(x-w)+labs(y-n);
long long dis4=labs(x-e)+labs(y-n);
printf("%lld\n",min(dis4,min(dis3,min(dis,dis2))));
}
}
如果 x 或 y 本身在範圍裡就可以取直線距離
如果 x 和 y 皆不在範圍裡,就取和四個頂點中距離最近的!
w 、 s 是代表巢穴西南點的 x 、 y 座標, e 、 n 是東北的 x 、 y 座標。
而 x 座標的正向是從西指向東。既然如此,就沒有任何 x 座標的值可以同時滿足 x <= w 且 x >= e ,因為兩側保證毫無交集(巢穴面積不為 0 )。
應為 x >= w 且 x <= e。
以上。希望有幫助到您。
w 、 s 是代表巢穴西南點的 x 、 y 座標, e 、 n 是東北的 x 、 y 座標。
而 x 座標的正向是從西指向東。既然如此,就沒有任何 x 座標的值可以同時滿足 x <= w 且 x >= e ,因為兩側保證毫無交集(巢穴面積不為 0 )。
應為 x >= w 且 x <= e。
以上。希望有幫助到您。
謝謝你!!!我一直在想是不是想法出問題,結果是判斷式不小心打錯><