A. Two Rival Students
题意:
一排有 \(n\) 个学生,两个竞争对手分别在位置 \(a\) 和 \(b\)。每次操作可以交换相邻两个学生,最多进行 \(x\) 次操作。求操作后两个竞争对手之间可能的最大距离(即 \(|p-s|\))。
思路:
初始距离为 \(d = |a-b|\)。每次交换可以让一个学生向远离对方的方向移动一步,从而增加 \(1\) 距离。最多可以增加 \(x\) 距离,但最大距离不超过 \(n-1\)(即一个在左端,一个在右端)。因此答案为 \(\min(d + x, n-1)\)。
代码
点击查看代码[code]void solve() { int n, x, a, b; cin >> n >> x >> a >> b; int d = abs(a - b); int ans = min(d + x, n - 1); cout 3\) 不可达。\(x = 3\):最大只能得到 \(3\),故 \(y > 3\) 不可达。
\(x \ge 4\):总可通过操作1和操作2增长到任意大的数,再通过操作2减到 \(y\),故可达。
</ul></ul>代码
点击查看代码[code]void solve() { int x, y; cin >> x >> y; if (x >= y) { cout |