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;
}