CF329E Evil

题目描述

在一个二维笛卡尔平面上有 $n$ 个城市。两座城市之间的距离等于它们之间的曼哈顿距离(曼哈顿距离定义见下方提示)。一条城市的哈密顿回路被定义为这 $n$ 个城市的一个排列。该哈密顿回路的长度被定义为排列中相邻城市之间距离之和,再加上排列中第一个城市和最后一个城市之间的距离。请计算给定城市的哈密顿回路的最长可能长度。

输入格式

第一行包含一个整数 $n$($3 \leq n \leq 10^{5}$)。接下来的 $n$ 行,每行包含两个整数 $x_{i}$ 和 $y_{i}$($0 \leq x_{i}, y_{i} \leq 10^{9}$),表示一个城市的坐标。所有给定的点都是不同的。

输出格式

输出一行,表示所给定城市的哈密顿回路的最长可能长度。你只需要输出长度本身,不需要输出回路的具体顺序。 请不要在 C++ 中使用 %lld 格式读写 64 位整数。推荐使用 cin、cout 流或 %I64d 格式。

说明/提示

在样例中,一条可能长度为 6 的哈密顿回路为 (1, 1)、(1, 2)、(2, 1)、(2, 2)。不存在长度大于 6 的哈密顿回路。 两座城市 $(x_{i}, y_{i})$ 和 $(x_{j}, y_{j})$ 之间的曼哈顿距离为 $|x_{i} - x_{j}| + |y_{i} - y_{j}|$。 由 ChatGPT 5 翻译