題目描述
在筆直的餘姚大街上,分佈着密密麻麻的店鋪,每天有成千上萬筆快遞訂單。小明想開個快遞中轉站,那每天一定能賺不少錢。每筆訂單必須當天送達指定店鋪。
爲了簡化問題,小明認爲所有店鋪都在一條座標軸上,並且每個店鋪都在軸上有一個座標,每天他都會把所有快遞放在一箇中轉點上,然後一件一件開始派送。
可是小明是個懶人,他想儘可能少走路。他的快遞中轉站開在什麼位置(位置可以是軸上任意點,也可以和店鋪位置重合),能使得中轉站到所有店鋪的距離之和的最小。那麼就請你和小明一起解決一下這個小問題吧,找到這個最小值。
輸入
第一行一個整數N(1<=N<=1000)表示在軸上共有N個店鋪需要送達快遞。
接下來N行,每行一個整數ai(0<=ai<=1,000,000)表示每個店鋪的位置。
輸出
包含一個整數,中轉站到所有店鋪的距離之和的最小值。
樣例輸入
5 0 20 40 10 30
樣例輸出
60
來源
【AC代碼】:
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int s[] = new int[n];
for (int i = 0; i < n; i++)
s[i] = sc.nextInt();
Arrays.sort(s);
int sum = 0;
int t = 0;
if (n % 2 != 0)
t = (s[0] + s[n - 1]) / 2;
else
t = s[n / 2];// 或t=s[n/2-1];
for (int i = 0; i < n; i++)
sum += Math.abs(s[i] - t);
System.out.println(sum);
}
}