引言:CSP(http://www.cspro.org/lead/application/ccf/login.jsp)是由中国计算机学会(CCF)发起的"计算机职业资格认证"考试,针对计算机软件开发、软件测试、信息管理等领域的专业人士进行能力认证。认证对象是从事或将要从事IT领域专业技术与技术管理人员,以及高校招考研究生的复试对象。

  • 问题描述

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

给定一个整数序列,请找出这个整数序列的中间数的值。

  • 输入格式

输入的第一行包含了一个整数n,表示整数序列中数的个数。

第二行包含n个正整数,依次表示a1, a2, …, an。

  • 输出格式

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

  • 样例输入

6

2 6 5 6 3 5

  • 样例输出

5

  • 样例说明

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

  • 样例输入

4

3 4 6 7

  • 样例输出

-1

  • 样例说明

在序列中的4个数都不满足中间数的定义。

  • 样例输入

5

3 4 6 6 7

  • 样例输出

-1

  • 样例说明

在序列中的5个数都不满足中间数的定义。

  • 评测用例规模与约定

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

  • 思路说明

首先利用sort()函数对输入的n个数字进行升序排列,这样所有值相同的数都会相邻。然后通过循环可以找到一组重复的数的起点i,终点j,只要i之前的数的个数等于j之后的数的个数,则说明这一组重复的数就是我们要找的中间数。

  • 源代码

# include <stdio.h>

# include <stdlib.h>

# include <memory.h>

# include <algorithm>

using namespace std;

bool compare(int a, int b)

{

return a < b;

}

int main(void)

{

int n; //个数

int sign = 1;

scanf("%d", &n);

int *input = (int *)malloc(sizeof(int) * n);

memset(input, 0, sizeof(int) * n);

for (int i = 0; i < n; i++)

{

scanf("%d", input+i);

}

sort(input, input+n, compare); //升序排列

int i, j;

for (i = 0; i < n; )

{

for (j = i; j < n; j++)

{

if (input[i] != input[j])

{

break;

}

}

if (i == n - j) //大于input[i]数的个数 = 小于input[i]数的个数

{

printf("%d\n", input[i]);

sign = 0;

}

i = j;

}

if (sign)

{

printf("%d\n", -1);

}

return 0;

}

CSP201612-1:中间数的更多相关文章

  1. ytu 2011: C语言实验——找中间数(水题)

    2011: C语言实验——找中间数 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 212  Solved: 122[Submit][Status][Web ...

  2. CCF 201612-1 中间数

    试题编号:201612-1 试题名称:中间数 时间限制:1.0s 内存限制:256.0MB 问题描述 在一个整数序列a1, a2, -, an中,如果存在某个数,大于它的整数数量等于小于它的整数数量, ...

  3. CCF CSP 201612-1 中间数

    题目链接:http://118.190.20.162/view.page?gpid=T52 问题描述 试题编号: 201612-1 试题名称: 中间数 时间限制: 1.0s 内存限制: 256.0MB ...

  4. CCF201612-1 中间数(二分思想)

    问题链接:CCF201612试题. .对n个数进行排序,找出中间那个数,然后将中间那个数的左右与其相等的数去掉,看左右剩下的数个数是否相等,如果相等则中间那个数就是答案,否在输出-1. 问题描述 问题 ...

  5. CCF201612-1 中间数 java(100分)

    试题编号: 201612-1 试题名称: 中间数 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 在一个整数序列a1, a2, …, an中,如果存在某个数,大于它的整数数量等 ...

  6. CCF 2016-12-1 中间数

    CCF 2016-12-1 中间数 题目 问题描述 在一个整数序列a1, a2, -, an中,如果存在某个数,大于它的整数数量等于小于它的整数数量,则称其为中间数.在一个序列中,可能存在多个下标不相 ...

  7. 基于visual Studio2013解决面试题之0808寻找中间数

     题目

  8. leetCode刷题(找到两个数组拼接后的中间数)

    There are two sorted arrays nums1 and nums2 of size m and n respectively. Find the median of the two ...

  9. CCF|中间数|Java

    import java.util.*; public class tyt { public static void main(String[] args) { Scanner in = new Sca ...

随机推荐

  1. HDU 1017A Mathematical Curiosity (暴力统计特殊要求个数)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1017 A Mathematical Curiosity Time Limit: 2000/1000 M ...

  2. js取整、四舍五入等数学函数

    js只保留整数,向上取整,四舍五入,向下取整等函数1.丢弃小数部分,保留整数部分parseInt(5/2) 2.向上取整,有小数就整数部分加1 Math.ceil(5/2) 3,四舍五入. Math. ...

  3. 浅谈Jquery和常用框架Vue变化

    区别 Vue数据与视图的分离 Vue数据驱动视图 Jquery 简单示例: <!DOCTYPE html> <html lang="en"> <hea ...

  4. 学习笔记 - Manacher算法

    Manacher算法 - 学习笔记 是从最近Codeforces的一场比赛了解到这个算法的~ 非常新奇,毕竟是第一次听说 \(O(n)\) 的回文串算法 我在 vjudge 上开了一个[练习],有兴趣 ...

  5. 分布式网上商城项目- BeanDefinitionStoreException

    BeanDefinitionStoreException: 严重: StandardWrapper.Throwable org.springframework.beans.factory.BeanDe ...

  6. window下pip install Scrapy报错解决方案

    1.首先打开https://www.lfd.uci.edu/~gohlke/pythonlibs/#twisted,找到对应版本的Twisted并下载到你的文件夹. 2.利用pip install命令 ...

  7. double工具类

    package com.zq.utils; /** * * 经度数字操作类 * * Created by MyEclipse. Author: ChenBin E-mail: chenbin_2008 ...

  8. ajaxSubmit 在ie9或360兼容中,form下是空的

    解决办法:在<head>....</head>中加入<meta http-equiv="X-UA-Compatible" content=" ...

  9. IOS移动端(H5)alert/confirm提示信息去除url

    前几天写移动端项目用alert和confirm进行信息提示,但发现在iOS系统中,每次提示信息上面都会被添加一行URL地址,安卓却没有,经过查找之后,果然不出所料,兼容!!兼容!!!兼容!!! 需要重 ...

  10. 视频网站数据MapReduce清洗及Hive数据分析

    一.需求描述 利用MapReduce清洗视频网站的原数据,用Hive统计出各种TopN常规指标: 视频观看数 Top10 视频类别热度 Top10 视频观看数 Top20 所属类别包含这 Top20 ...