TopCoder SRM 646 Div1 Easy: TheConsecutiveIntegersDivOne (全探索・シミュレーション)
解法
昇順にソートし、スタート位置、操作しない数字、増加か減少か、というのを全探索してシミュレーションする。やるだけ。
コード
import java.util.Arrays; public class TheConsecutiveIntegersDivOne { public int find(int[] numbers, int k) { Arrays.sort(numbers); int min = Integer.MAX_VALUE; for (int start = 0; start + k - 1 < numbers.length; start++) { for (int q = 0; q < 2; q++) { int p = q == 0 ? 1 : -1; for (int i = 0; i < k; i++) { int first = numbers[i + start] - i * p; int ope = 0; for (int j = 0; j < k; j++) { ope += Math.abs((first + j * p) - numbers[start + j]); } min = Math.min(min, ope); } } } return min; } }