中间数
来源:互联网 发布:linux查看端口被占用 编辑:程序博客网 时间:2024/04/28 05:49
试题编号:201612-1试题名称:中间数时间限制:1.0s内存限制:256.0MB问题描述:
问题描述
在一个整数序列a1, a2, …, an中,如果存在某个数,大于它的整数数量等于小于它的整数数量,则称其为中间数。在一个序列中,可能存在多个下标不相同的中间数,这些中间数的值是相同的。
给定一个整数序列,请找出这个整数序列的中间数的值。
给定一个整数序列,请找出这个整数序列的中间数的值。
输入格式
输入的第一行包含了一个整数n,表示整数序列中数的个数。
第二行包含n个正整数,依次表示a1, a2, …, an。
第二行包含n个正整数,依次表示a1, a2, …, an。
输出格式
如果约定序列的中间数存在,则输出中间数的值,否则输出-1表示不存在中间数。
样例输入
6
2 6 5 6 3 5
2 6 5 6 3 5
样例输出
5
样例说明
比5小的数有2个,比5大的数也有2个。
样例输入
4
3 4 6 7
3 4 6 7
样例输出
-1
样例说明
在序列中的4个数都不满足中间数的定义。
样例输入
5
3 4 6 6 7
3 4 6 6 7
样例输出
-1
样例说明
在序列中的5个数都不满足中间数的定义。
评测用例规模与约定
对于所有评测用例,1 ≤ n ≤ 1000,1 ≤ ai ≤ 1000。
#include <iostream>#include <vector>#include <stdio.h>#include <algorithm>#include <iomanip>#include <string>#include <cstdio>#include <string.h>#include <set>#include <cmath>#include <map>using namespace std;int main(){ vector<int> v1; int n; cin >> n; for(int i = 0; i < n; i++){ int t; cin >> t; v1.push_back(t); } sort(v1.begin(), v1.end()); int mid; if(v1.size() % 2 ==0){ mid = v1.size() / 2 - 1 ; }else { mid = v1.size() / 2; } int right = 0, left = 0; for(int i = 0; i < mid; i++){ if(v1[i] < v1[mid]){ left ++; } } for(int j = mid + 1; j < v1.size() ; j++){ if(v1[j] > v1[mid]){ right++; } } if(left == right){ cout << v1[mid]; }else { cout << "-1" ; } return 0;}
0 0
- 中间数
- 中间数
- 中间数
- 中间数
- 中间数
- 求三数中的中间数
- 找中间数问题
- 单链表找中间数
- 中间数-CCF往届题
- CCF201612-1中间数
- CCF 中间数解析
- ccf试题 中间数
- CCF201612-1-中间数
- java:中间数
- 寻找中间数(代码)
- CCF201612-1中间数
- CCFCSP201612-1中间数
- (JAVA) 中间数
- yum info node报Error:No matching Packages to list yum没有对应的包信息。
- 针对无人机航拍视频中动态背景下的目标检测
- 1005. 继续(3n+1)猜想 (25)(java实现)
- JavaSE学习53:细说多线程之内存可见性
- 【C++学习】字符串分割
- 中间数
- Sheldon Numbers Gym
- cf Hard Process
- LeetCode : Valid Perfect Square
- 415. Add Strings
- Java 程序中的多线程
- 欢迎使用CSDN-markdown编辑器
- Android SdCard 新建文件夹并在文件夹中读、写文件
- java 线程操作方法