P12543 [APIO2025] 转杆
题目背景
请注意:本题只支持 C++ 语言提交;你不需要也不应该实现 `main` 函数;你需要在程序开头添加如下内容:
```cpp
#include
void energy(int n, std::vector v);
void rotate(std::vector t, int x);
```
题目描述
Asadullo 是电力与工业优化联盟(Alliance for Power and Industrial Optimization,APIO)的杰出研究员。最近,他研究出利用一种未知材料的发电方法。
这种未知材料不能单独地发电;但如果用这种材料制造出若干极长的杆,这些长杆之间的相互作用能产生电力。
特别地,给定 $n$ 根长杆的属性 $v[0], v[1], \ldots, v[n-1]$。该属性描述了第 $i$ 根长杆放置在与 $x$ 轴正方向逆时针成 $a[i] = 360 \cdot \frac{v[i]}{100000}$ 的角度。这 $n$ 根长杆的发电效率为:
$$\sum_{i
输入格式
无
输出格式
无
说明/提示
### 例子
#### 例 1
考虑以下函数调用:
```cpp
energy(2, [20000, 10000])
```
此处,$v = [20000, 10000]$ 且初始的发电效率为 $20000 - 10000 = 10000$。以下是一种可能的场景:
1. 调用 `rotate([0, 1], 8000)`。那么 `v` 变成 `[28000,18000]`。发电效率保持不变。
2. 调用 `rotate([0], 15000)`。那么 `v` 变成 `[43000,18000]`。发电效率变成 $43000 - 18000 = 25000$。
可以证明,对于初始配置,25000 是能实现的最大发电效率。因此,Asadullo 可以停止操作。
#### 例 2
考虑以下函数调用:
```cpp
energy(3, [5000, 12500, 37500])
```
题面的示例插图描述的就是这个例子,可以证明,初始配置实现的即是最大的发电效率。所以,不需要执行任何操作。
### 约束条件
- $2 \leq n \leq 100 \, 000$
- 对任意的 $0 \leq i < n$,满足 $0 \leq v[i] \leq 49 \, 999$
- 数组 `v` 的元素不一定互不相同
### 子任务
1. (5 分) $n = 2$
2. (11 分) 对于每个 $0 \leq i < n$,均有 $v[i] < 25 \, 000$
3. (8 分) $n \leq 10$
4. (15 分) $n \leq 100$
5. (15 分) $n \leq 300$
6. (20 分) $n \leq 2000$
7. (26 分) 没有额外的约束条件。
### 评测程序示例
评测程序示例按以下格式读取输入:
- 第 1 行:$n$
- 第 2 行:$v[0] \, v[1] \ldots \, v[n-1]$
评测程序示例按以下格式打印输出:
- 第 1 行:长杆最终的发电效率
此外,评测程序示例会将你所调用的转动操作的详细信息写入 `log.txt` 文件。