zoukankan      html  css  js  c++  java
  • 救救兔子(二分)

    链接:https://ac.nowcoder.com/acm/contest/372/B
    来源:牛客网
     

    时间限制:C/C++ 1秒,其他语言2秒
    空间限制:C/C++ 262144K,其他语言524288K
    64bit IO Format: %lld

    题目描述

    某天,一只可爱的小兔砸在路上蹦蹦跳跳地走着,怪人PM6出现了,于是小兔子被盯上了。

    PM6:“免子。哦不,小兔子。你长得真好…不对,真可爱。我这里有一道很容易很容易的题目,答对了我就请你吃萝卜,答错了你就请我吃兔肉,好不好呀~~?”

    小兔砸:“萝卜!?好呀好呀好呀。”于是笨笨的兔纸入套了。

    PM6:“我这里有一个由 N 个数组成的序列,给你 M 个询问,每个询问会给你一个数 X ,对于每个询问,你要回答出序列中与这个值最接近的元素。”

    听完题后,兔子吓成一坨免子了,面临着变成红烧兔头的危险,求求你救救兔子!

    输入描述:

    第一行包含一个整数N,为序列长度。
    第二行包含N个整数,为序列各元素。
    第三行包含一个整数M,为PM6的询问个数。
    接下来M行,每行一个整数X,为要询问最接近元素的给定值。
    对于40%的数据:1<=N<=10000,1<=M<=1000
    对于另外10%的数据:M=1
    对于100%的数据:1 <=N<= 100000,1<=M<=10000,0<=序列中的每个数,X<=1e9

    输出描述:

    M行,每行有一个整数,为最接近相应给定值的元素值,保持输入顺序。若有多个值满足条件,输出最小的一个。

    示例1

    输入

    复制

    5
    2 4 5 5 7
    3
    2
    5
    6

    输出

    复制

    2
    5
    5

    代码:

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #include<queue>
    #include<stack>
    #include<set>
    #include<map>
    #include<vector>
    #include<cmath>
    
    const int maxn=1e5+5;
    typedef long long ll;
    using namespace std;
    int a[maxn];
    int b[maxn];
    bool cmp(int x,int y)
    {
    	return x>y;
    }
    int main()
    {
    	int n;
    	scanf("%d",&n);
        for(int t=0;t<n;t++)
        {
        	scanf("%d",&a[t]);
        	b[t]=a[t];
    	}
    	sort(a,a+n);
    	sort(b,b+n,cmp);
    	int m;
    	scanf("%d",&m);
    	int x;
    	int index1,index2;
    	for(int t=0;t<m;t++)
    	{
    		scanf("%d",&x);
    		index1=lower_bound(a,a+n,x)-a;
    		index2=lower_bound(b,b+n,x,greater<int>())-b;
    //		cout<<a[index1]<<" "<<b[index2]<<endl;
    	    if(abs(a[index1]-x)>=abs(b[index2]-x))
    	    {
    	    	printf("%d
    ",b[index2]);
    	    }
    	    else
    	    {
    	    	printf("%d
    ",a[index1]);
    		}
        }
    	return 0;
    }
  • 相关阅读:
    AD域新建用户
    Windows程序设计(1)
    C++ 进阶 模板和STL
    C++ 基于多态的职工管理系统
    C++核心编程
    C++入门-控制台版的通讯录管理系统
    第一章、熟悉工作环境和相关工具
    Spring整合JDBC temple
    SpringMVC整合mybaitis
    实验12 添加0号中断处理程序
  • 原文地址:https://www.cnblogs.com/Staceyacm/p/10781738.html
Copyright © 2011-2022 走看看