#include #include #include using namespace std;

int main() { int n, k; cin >> n >> k; int* arr = new int[n]; for (int i = 0; i < n; i++) { cin >> arr[i]; } sort(arr, arr + n); // 将数组升序排列 int median = arr[n / 2]; // 数组中位数 int ans = 0; // 最终答案 int min_diff = INT_MAX; // 最小差值 for (int i = 0; i < n; i++) { int diff = abs(arr[i] - median + k - 1) - (arr[i] - median + 1); // 计算差值 if (diff < min_diff) { min_diff = diff; ans = i; } else if (diff == min_diff) { ans = max(ans, i); // 如果差值相等,选择下标更大的 } } cout << ans + 1 << endl; // 下标从1开始 return 0;

给定一个数组X和正整数K请找出使表达式x-x0+1-X+K-1结果最接近于数组中位数的下标1如果有多个满足条件请返口最大的。其中数组中位数:长度为N的数组按照元素的值大小升序排列后下标为N2元素的值 使用c++实现

原文地址: https://www.cveoy.top/t/topic/fH2h 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录