用c语言写给定两个正整数n,m,在给定长度为n的正整数序列a, 保证n为奇数。接下来m行,每行两个正整数p, x。表示把a[p]修改为x。对于每次操作输出修改后的中位数。
时间: 2024-04-12 12:28:33 浏览: 126
以下是用 C 语言编写的代码,可以实现给定的要求:
```c
#include <stdio.h>
int main() {
int n, m;
scanf("%d %d", &n, &m);
int a[n];
for (int i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
for (int i = 0; i < m; i++) {
int p, x;
scanf("%d %d", &p, &x);
a[p] = x;
// 使用插入排序将数组重新排序
for (int j = 1; j < n; j++) {
int key = a[j];
int k = j - 1;
while (k >= 0 && a[k] > key) {
a[k + 1] = a[k];
k--;
}
a[k + 1] = key;
}
// 输出修改后的中位数
printf("%d\n", a[n / 2]);
}
return 0;
}
```
这段代码首先读取输入的 n 和 m,然后读取长度为 n 的正整数序列 a。接下来,根据给定的 m 行操作,将 a[p] 修改为 x,并使用插入排序对数组重新排序。最后,输出修改后的中位数。
请注意,这段代码假设输入的数据合法,即保证 n 为奇数,并且不进行错误处理。
阅读全文