上海市计算机学会竞赛平台2022年5月月赛丙组最远城市距离
题目描述
设两个点的坐标分别为 (x,y)(x,y) 与 (x′,y′)(x′,y′),定义这两个点的城市距离为
∣x−x′∣+∣y−y′∣∣x−x′∣+∣y−y′∣
给定 nn 个点的坐标,请从中寻找两个点,使得它们的城市距离达到最大,输出这个最大值。
输入格式
- 第一行:单个整数 nn。
- 第二行到第 n+1n+1 行:每行有两个整数 xixi 和 yiyi,表示一个点的坐标。
输出格式
- 单个整数:表示最大的城市距离。
数据范围
- 对于 30%30% 的数据,2≤n≤5,0002≤n≤5,000;
- 对于 60%60% 的数据,2≤n≤50,0002≤n≤50,000;
- 对于 100%100% 的数据,2≤n≤500,0002≤n≤500,000。
- −500,000,000≤xi,yi≤500,000,000−500,000,000≤xi,yi≤500,000,000;
样例数据
输入:
4
0 0
0 1
1 3
3 2
输出:
5
说明:
(0,0)与(3,2)的城市距离是最大的
详见代码:
#include <bits/stdc++.h>
using namespace std;
int main()
{int n;int maxa, maxs, mina, mins;cin >> n;for (int i = 1; i <= n; i++){int x, y;scanf("%d %d", &x, &y);if (i == 1) {maxa = mina = x + y;maxs = mins = x - y;}maxa = max(maxa, x + y);mina = min(mina, x + y);maxs = max(maxs, x - y);mins = min(mins, x - y);}cout << max(maxa - mina, maxs - mins) << endl;return 0;
}