显示原始代码
#include <bits/stdc++.h>
using namespace std;
long long N;
long long get_max(vector<long long> A, long long left, long long right) {
if (A.empty())
return -1;
if (right - left == 0)
return A[left];
if ((right - left) <= 1) {
if (A[left] > A[right])
return A[left];
return A[right];
}
int middle = (right - left) / 2 + left;
int max_left = get_max(A, left, middle);
int max_right = get_max(A, middle + 1, right);
if (max_left > max_right)
return max_left;
else
return max_right;
}
long long main() {
scanf("%lld", &N);
vector<long long> A(N);
for (int i = 0; i < N; i++) scanf("%lld", &A[i]);
long long minSteps = 0;
long long maxVal = get_max(A, 0, N - 1);
for (int i = 0; i < N; i++) {
int diff = maxVal - A[i];
minSteps += diff;
}
printf("%lld", minSteps);
return 0;
}