查找最接近的元素
来源:互联网 发布:js删除节点本身 编辑:程序博客网 时间:2024/06/05 03:05
c:查找最接近的元素
- 查看
- 提交
- 统计
- 提问
- 总时间限制:
- 1000ms
- 内存限制:
- 65536kB
- 描述
在一个非降序列中,查找与给定值最接近的元素。
- 输入
- 第一行包含一个整数n,为非降序列长度。1 <= n <= 100000。
第二行包含n个整数,为非降序列各元素。所有元素的大小均在0-1,000,000,000之间。
第三行包含一个整数m,为要询问的给定值个数。1 <= m <= 10000。
接下来m行,每行一个整数,为要询问最接近元素的给定值。所有给定值的大小均在0-1,000,000,000之间。 - 输出
- m行,每行一个整数,为最接近相应给定值的元素值,保持输入顺序。若有多个值满足条件,输出最小的一个。
- 样例输入
32 5 82105
- 样例输出
85
- 查看
- 提交
- 统计
- 提问是
- using namespace std;
#include<iostream>
#include<iomanip>
#include<stack>
#include<fstream>
#include<algorithm>
#include<vector>
#include<iterator>
int main()
{
fstream in("C:\\Users\\admin\\Desktop\\in.txt");
int n,m;
int num;
vector<int> a;
in >> n;
for (int i = 1; i <= n; i++)
{
in >> num;
a.push_back(num);
}
in >> m;
sort(a.begin(), a.end());
while (m--)
{
in >> num;
auto p = lower_bound(a.begin(),a.end(),num);
int id1;
if(p == a.begin())
id1 =* p;
else {
vector<int>::iterator p1 = --p;
p++;
if (p == a.end())
id1 =* p1;
else {
if ((*p - num) >= (num - *p1)) {
id1 =* p1;
}
else id1 =* p;
}
}
cout << id1 << endl;;
}
}- 善用STL,此题和热血格斗场差不多
- 全局题号
- 7940
- 提交次数
- 72
- 尝试人数
- 32
- 通过人数
- 28
你的提交记录
#结果时间1Accepted05-07 0 0
- 查找最接近的元素
- 查找最接近的元素
- 查找最接近的元素
- OpenJudge_P7940 查找最接近的元素
- 01:查找最接近的元素
- openjudge 01:查找最接近的元素 入门二分
- 1.11.1二分查找最接近的数
- 查找和目标数最接近的或者相等的数
- 1.2.9 数组中大小最接近的两个元素差
- 求无序序列每个元素最接近的值
- 元素之和最接近 0 的区间(部分和)
- 查找组成一个偶数最接近的两个素数
- HWOJ 查找组成一个偶数最接近的两个素数
- 查找组成一个偶数最接近的两个素数
- 【华为oj】查找组成一个偶数最接近的两个素数
- 查找组成一个偶数最接近的两个素数
- 华为OJ--查找组成一个偶数最接近的两个素数
- 查找组成一个偶数最接近的两个素数
- 1012.数字分类
- 数字签名
- 数论常用内容——中国剩余定理
- KL距离(相对熵)
- LeetCode115—Distinct Subsequences
- 查找最接近的元素
- git学习笔记
- GUI编程【一】
- 俄罗斯方块.C语言
- jdbc和Hibernate (oracle和mySql)连接数据库 代码步骤
- 简单工厂模式(由专门的类来创建实例)
- Java序列化机制详解
- 配置管理·十六
- View关于坐标的几个方法和属性