mxqz ABC F
  • 板块学术版
  • 楼主Albert_Wei
  • 当前回复1
  • 已保存回复1
  • 发布时间2023/10/7 21:56
  • 上次更新2023/11/2 14:59:03
查看原帖
mxqz ABC F
676634
Albert_Wei楼主2023/10/7 21:56
#include <bits/stdc++.h>
#define int long long
using namespace std;

int xa, ya, xb, yb, xc, yc;
inline int dis1(int dx, int dy) {
	if (ya == yb && dx * (xa - xb) < 0)
		return abs(xa - xb) + 3;
	if (xa == xb && dy * (ya - yb) < 0)
		return abs(ya - yb) + 3;
	return abs(xa - xb - dx) + abs(ya - yb - dy);
}
inline int dis2(int dx, int dy) {
	if (xb == xc) {
		if ((yb - yc) * dy < 0) return abs(yb - yc) + 4;
		if (dy == 0) return abs(yb - yc) + 2;
		return abs(yb - yc);
	}
	if (ya == yb) {
		if ((xb - xc) * dx < 0) return abs(xb - xc) + 4;
		if (dx == 0) return abs(xb - xc) + 2;
		return abs(xb - xc);
	}
	int ans = abs(xb - xc) + abs(yb - yc) + 2;
	if ((xb - xc) * dx < 0 || (yb - yc) * dy < 0) ans += 2;
	return ans;
}

signed main() {
	cin >> xa >> ya >> xb >> yb >> xc >> yc;
	int ans = 1e18;
	int dx[4] = {0, 0, 1, -1};
	int dy[4] = {1, -1, 0, 0};
	for (int i = 0; i < 4; i ++)
		ans = min(ans, dis1(dx[i], dy[i]) + dis2(dx[i], dy[i]));
	cout << ans << endl; 
	return 0;
}

2023/10/7 21:56
加载中...