显示原始代码
#include <stdio.h>
#include <stdlib.h>
int minOperations(int *arr, int n, int target) {
int operations = 0;
for (int i = 0; i < n; i++) {
int diff;
if (arr[i] >= target) {
diff = arr[i] - target;
} else {
diff = target - arr[i];
}
operations += diff <= 5 ? diff : 10 - diff;
}
return operations;
}
int main() {
int n;
if (scanf("%d", &n) != 1) {
printf("Invalid input\n");
return 1;
}
int *arr = (int *)malloc(n * sizeof(int));
if (arr == NULL) {
printf("Memory allocation failed\n");
return 1;
}
for (int i = 0; i < n; i++) {
if (scanf("%d", &arr[i]) != 1) {
printf("Invalid input\n");
free(arr);
return 1;
}
}
int minOps = INT_MAX;
int target = 0;
for (int i = 0; i < 10; i++) {
int ops = minOperations(arr, n, i);
if (ops < minOps) {
minOps = ops;
target = i;
}
}
printf("%d\n", minOps);
free(arr);
return 0;
}