public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
long result = 0L;
StringTokenizer st = new StringTokenizer(br.readLine());
for (int i = 0; i < n; i++) {
int value = Integer.parseInt(st.nextToken()) - i;
pq.offer(value);
if (!pq.isEmpty() && pq.peek() > value) {
result += pq.peek() - value;
pq.poll();
pq.offer(value);
}
}
System.out.println(result);
}
출처:https://www.acmicpc.net/problem/13323
