#include #include #include #include // // Created by cteam022 on 10/19/19. // using namespace std; int checkSoul(vector &original, vector &new_seq, int shift) { int result = 0; for(int i = 0; i < original.size(); i++) { result += abs(original[i] - new_seq[i] - shift); } return result; } int main() { ios_base::sync_with_stdio(0); cin.tie(NULL); int number, distance, temp, best_move = INT32_MAX; cin >> number >> distance; vector sequence(number); for(int i = 0; i < number; i++) { cin >> temp; sequence[i] = temp; } sort(sequence.begin(),sequence.end()); vector new_sequence(number); new_sequence[0] = sequence[0]; for(int i = 1; i < number; i++) { new_sequence[i] = new_sequence[i-1] + distance; } int diff = new_sequence[number-1] - sequence[number-1]; if(diff < 0) { for(int i = 0; i < (-1)*diff; i++) { temp = checkSoul(sequence, new_sequence, i); if(temp <= best_move) { best_move = temp; }else{ break; } } }else if (diff >= 0){ for(int i = 0; i < diff; i++) { temp = checkSoul(sequence, new_sequence, -1*i); if(temp <= best_move) { best_move = temp; }else{ break; } } }else{ return -1; } cout << best_move << endl; return 0; } // 10 4 // 140 26 69 55 39 64 2 89 78 421