zoukankan      html  css  js  c++  java
  • Running Median

    题目描述

    For this problem, you will write a program that reads in a sequence of 32-bit signed integers. After each odd-indexed value is read, output the median (middle value) of the elements received so far.

    输入

    The first line of input contains a single integer P, (1 ≤ P ≤ 1000), which is the number of data sets that follow. The first line of each data set contains the data set number, followed by a space, followed by an odd decimal integer M, (1 ≤ M ≤ 9999), giving the total number of signed integers to be processed.
    The remaining line(s) in the dataset consists of the values, 10 per line, separated by a single space.
    The last line in the dataset may contain less than 10 values.

    输出

    For each data set the first line of output contains the data set number, a single space and the number of medians output (which should be one-half the number of input values plus one). The output medians will be on the following lines, 10 per line separated by a single space. The last line may have less than 10 elements, but at least 1 element. There should be no blank lines in the output.

    样例输入

    3
    1 9
    1 2 3 4 5 6 7 8 9
    2 9
    9 8 7 6 5 4 3 2 1
    3 23
    23 41 13 22 -3 24 -31 -11 -8 -7
    3 5 103 211 -311 -45 -67 -73 -81 -99
    -33 24 56

    样例输出

    1 5
    1 2 3 4 5
    2 5
    9 8 7 6 5
    3 12
    23 23 22 22 13 3 5 5 3 -3
    -7 -3

    code

    #include <iostream>
    #include <cstdio>
    #include <algorithm>
    #include <cstring>
    #include <queue>
    #include <vector>
    using namespace std;
    typedef long long ll;
    int main(){
    	int t;
    	scanf("%d", &t);
    	while(t--){
    		int id,n;
    		scanf("%d%d", &id,&n);
    		printf("%d %d
    ", id,(n+1)/2);
    		priority_queue<int> l;
    		priority_queue<int,vector<int>,greater<int>> r;
    		for(int i = 1; i <= n; ++i){
    			int x;
    			scanf("%d", &x);
    			if(l.size()>r.size()&&x<l.top())
    				r.push(l.top()),l.pop(),l.push(x);
    			else r.push(x);
    
    			while(l.size()<r.size()) l.push(r.top()),r.pop();
    			int j=(i+1)/2;
    			if(i&1) printf("%d%s", l.top(),(i<n&&j%10!=0)?" ":"
    ");
    		}
    	}
    	return 0;
    }
    
  • 相关阅读:
    An unknown Subversion error occurred. (code = 155037)
    github Mac端的使用案例
    响应式布局的三大要点
    手机web——自适应网页设计(html/css控制)
    移动页面自适应手机屏幕宽度
    js判断手机访问跳转到手机站
    针对IE的CSS hack 全面 实用
    jQuery片段
    CSS Sprite初探之原理、使用
    10 个优秀的JavaScript开发框架
  • 原文地址:https://www.cnblogs.com/sciorz/p/9228365.html
Copyright © 2011-2022 走看看