/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package sutaz; import java.util.ArrayList; import java.util.HashMap; import java.util.Scanner; /** * * @author janotka1 */ public class Marathon { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(sc.hasNextInt()) { int stands = sc.nextInt(); int distance = sc.nextInt(); int sum = 0; HashMap currentPositions = new HashMap<>(); for(int i =0; i < stands; i++) { int pos = sc.nextInt(); sum += pos; currentPositions.put(pos, pos); } int avg = sum / stands; sumOfChange(currentPositions, avg, distance); } } public static void sumOfChange(HashMap currentPositions, int avg, int distance) { int median = 0; int indexOfMedian = 0; int[] arrayOfsort = new int[currentPositions.size()]; int i = 0; for(Integer intik : currentPositions.keySet()) { if(Math.abs(median - avg) > Math.abs(intik - avg)) { median = intik; indexOfMedian = i; } arrayOfsort[i] = intik; i++; } int minSum = Integer.MAX_VALUE; for(i = 0; i < arrayOfsort.length; i++) { int sum = 0; int countBG = 0; int countSM = 0; for(int j = 0; j < arrayOfsort.length; j++) { if(arrayOfsort[i] < arrayOfsort[j] && i != j) { countSM++; sum += arrayOfsort[j] - (countSM * distance + arrayOfsort[i]); } if(arrayOfsort[i] > arrayOfsort[j] && i != j) { countBG++; sum += (arrayOfsort[i] - countBG * distance) - arrayOfsort[j]; } } if(minSum > sum) { minSum = sum; } } System.out.println(minSum); } }