SCAU OJ 19634 有序数组元素安插

时间限制:1000MS  代码长度限制:10KB

题型: 编程题   语言: G++;GCC;VC;JAVA;PYTHON

描述:

给定n个有序整数构成的序列,之后做m次操作,每次操作给定一个整数,要求将该整数安插到有序序列当中,之后序列仍然保持有序,每一次操作之后,输出当前序列的中位数。(中位数是指,当序列为奇数个数时,中位数为排在中间的那个数字,当序列为偶数个数时,中位数为排在中间的两个数之和的一半)

输入格式:

第一行为n
第二行为n个整数,以空格分割
第三行为m
第四行为m个整数,以空格分割

输出格式:

m行,每行一个输出的中位数

输入样例:

3
1 5 9
2
3 10

输出样例:

4
5

#include 
#include 
#include 
using namespace std;

int main()
{
    int n;
    cin >> n;
    vector arr(n);
    for(int i = 0; i < n; i++) cin >> arr[i];
    int m; cin >> m;
    for(int i = 0; i < m; i++)
    {
        int a; cin >> a;
        auto it = lower_bound(arr.begin(),arr.end(),a);
        //cout << *(it - 1) << endl;
        int idx = it - arr.begin();
        arr.insert(arr.begin() + idx,a);
        int len = arr.size();
        if(len % 2)
            cout << arr[len / 2] << endl;
        else
            cout << (arr[len / 2 - 1] + arr[len / 2]) / 2.0 << endl;
    }
    return 0;
}

你可能感兴趣的:(算法,c++,数据结构)