zoukankan      html  css  js  c++  java
  • CCF 2016-12-1 中间数

    CCF 2016-12-1 中间数

    题目

    问题描述

      在一个整数序列a1, a2, …, an中,如果存在某个数,大于它的整数数量等于小于它的整数数量,则称其为中间数。在一个序列中,可能存在多个下标不相同的中间数,这些中间数的值是相同的。
      给定一个整数序列,请找出这个整数序列的中间数的值。

    输入格式

      输入的第一行包含了一个整数n,表示整数序列中数的个数。
      第二行包含n个正整数,依次表示a1, a2, …, an

    输出格式

      如果约定序列的中间数存在,则输出中间数的值,否则输出-1表示不存在中间数。

    样例输入

    6
    2 6 5 6 3 5
    

    样例输出

    5
    

    样例说明

      比5小的数有2个,比5大的数也有2个。

    评测用例规模与约定

      对于所有评测用例,1 ≤ n ≤ 1000,1 ≤ ai ≤ 1000。

    思路

    水题,先排序,找到中位数,之后查看左右的相同数字,找到left和right,输出结果即可。

    代码

    #include<iostream>
    #include<algorithm>
    
    using namespace std;
    
    int main()
    {
        int n, mid, left, right;
      	int num[1010];
      	
        cin>>n;
        for(int i=0; i<n; i++)
            cin>>num[i];
     
        sort(num, num+n);
     
        mid = n/2;
        left = mid;
        right = n - mid - 1;
        
        for(int i=mid-1; i>=0; i--)
        {
        	if(num[i] == num[mid])
        	{
        		left--;
    		}
            else
            {
            	break;
    		}
        }
            
       
        for(int i=mid+1; i<n; i++)
        {
        	if(num[i] == num[mid])
        	{
        		right--;
    		}
            else
            {
            	break;
    		}            
    	}
               
        if(left == right)
        {
        	cout<<num[mid];
    	}
        else
        {
        	cout<<"-1";
    	}
            
        return 0;
    }
    
  • 相关阅读:
    揭开正则表达式的神秘面纱
    海量数据库的查询优化及分页算法方案
    ASP.NET纯数字验证码
    ASP.NET四种页面导航方式之比较与选择
    C#数据结构之队列
    if exists
    使用tfs online做代码片段笔记管理
    强制删除数据库
    C# GetType()
    TreeView
  • 原文地址:https://www.cnblogs.com/blogxjc/p/11398978.html
Copyright © 2011-2022 走看看