F题Ssyze's Hard Drive
原题链接
解题思路
磁头从位置 x 移动到位置 y 所需的寻道距离为 |y-x|,为两磁道相对距离。
则从最小位置磁道顺序移动至最大位置磁道即可经过所有目标磁道。
所求转化为初始位置到最小位置或最大位置的较小值。
AC代码
#include <iostream> using namespace std; int main(void) { int n, s, t, min, max; int r, d1, d2; cin >> n >> s; cin >> t; min = max = t; n--; while (n--) { cin >> t; if (t < min) min = t; if (t > max) max = t; } r = max - min; d1 = s - min; if (d1 < 0) d1 = -d1; d2 = max - s; if (d2 < 0) d2 = -d2; r += (d1 < d2) ? d1 : d2; cout << r; return 0; }