zoukankan      html  css  js  c++  java
  • CCF CSP 2019031 小中大

    题目背景

    在数据分析中,最小值最大值以及中位数是常用的统计信息。

    题目描述

    老师给了你\(n\)个整数组成的测量数据,保证有序(可能为升序或降序),可能存在重复的数据。请统计出这组测量数据中的最大值、中位数以及最小值,并按照从大到小的顺序输出这三个数。

    输出格式

    从标准输入读入数据。

    第一行输入一个整数n,在第二行中存在\(n\)个有序的整数,表示测量数据,可能为升序或降序排列,可能存在连续多个整数相等,整数与整数之间使用空格隔开。

    输出格式

    输出到标准输出。

    包含一行,包括最大值、中位数以及最小值共三个数,并按照从大到小的顺序输出。数据与数据之间使用空格隔开。对于整数直接输出整数,对于可能出现的分数,请输出四舍五入保留1位小数的结果。

    样例1输入

    3
    -1 2 4
    

    样例1输出

    4 2 -1
    

    样例1解释

    4 为最大值, 2为中位数,-1为最小值。

    样例2输入

    4 
    -2 -1 3 4
    

    样例2输出

    4 1 -2
    

    样例2解释

    4为最大值,(-1+3)/2 =1为中位数,-2为最小值。

    子任务

    测试点 n 测量数据的绝对值 测量数据是否均相同
    1,2 \(\le10^3\) \(\le10^7\)
    3,4,5,6 \(\le10^3\) \(\le10^7\)
    7,8 \(\le10^5\) \(\le10^7\)
    9,10,11,12,13,14,15,16,17,18,19,20 \(\le10^5\) \(\le10^7\)

    代码

    #include <iostream>
    #include <cstdio>
    
    using namespace std;
    
    const int N = 1e5;
    int a[N];
    
    int main()
    {
        int n;
        scanf("%d", &n);
        for(int i = 0; i < n; i++)
            scanf("%d", &a[i]);
        int mina = a[0], maxa = a[n - 1];
        if(mina > maxa) swap(mina, maxa);
        if(n % 2 == 1) {
            printf("%d %d %d", maxa, a[n / 2], mina);
        } else {
            if((a[n / 2 - 1] + a[n / 2]) % 2 == 1)
                printf("%d %.1lf %d", maxa, (double)((a[n / 2 - 1] + a[n / 2]) / 2.0), mina);
            else
                printf("%d %d %d", maxa, (a[n / 2 - 1] + a[n / 2]) / 2, mina);
        }
    
        return 0;
    }
    
  • 相关阅读:
    采用NAND Flash启动时出现Kernel panic not syncing: No init found错误
    ubuntu 11.10 安装小企鹅fcitx输入法
    UBoot中设定的bootdelay参数不起作用
    python 数据类型
    python运算符
    python符号//、%和/运算
    pytho 基本数据类型
    Python 开篇
    mmsplayer v2 java 之(mmsPlayer 播放类)
    mmsplayer v2 java 之(mmsTrack 音频类)
  • 原文地址:https://www.cnblogs.com/zhangzizi/p/14443164.html
Copyright © 2011-2022 走看看