zoukankan      html  css  js  c++  java
  • 【noiOJ】p7940

    01:查找最接近的元素

    总时间限制: 
    1000ms
     
    内存限制: 
    65536kB
    描述

    在一个非降序列中,查找与给定值最接近的元素。

    输入
    第一行包含一个整数n,为非降序列长度。1 <= n <= 100000。
    第二行包含n个整数,为非降序列各元素。所有元素的大小均在0-1,000,000,000之间。
    第三行包含一个整数m,为要询问的给定值个数。1 <= m <= 10000。
    接下来m行,每行一个整数,为要询问最接近元素的给定值。所有给定值的大小均在0-1,000,000,000之间。
    输出
    m行,每行一个整数,为最接近相应给定值的元素值,保持输入顺序。若有多个值满足条件,输出最小的一个。
    样例输入
    3
    2 5 8
    2
    10
    5
    样例输出
    8
    5
     1 #include <iostream>
     2 #include <cstdio>
     3 #include <cmath>
     4 using namespace std;
     5 int n,m,i,l,r,mid,before,x;
     6 bool bb;
     7 int a[100100];
     8 int main()
     9 {
    10     scanf("%d",&n);
    11     for (i=1;i<=n;i++)
    12         scanf("%d",&a[i]);
    13     scanf("%d",&m);
    14     for (i=1;i<=m;i++)
    15     {
    16         scanf("%d",&x);
    17         l=1; r=n; bb=0;
    18         while (l<r)
    19         {
    20             mid=(l+r)/2;
    21             if (a[mid]<=x)
    22                 l=mid;
    23             else
    24                 r=mid;
    25             if (l+1==r)
    26                 if (abs(x-a[l])<=abs(x-a[r]))
    27                 {
    28                     printf("%d
    ",a[l]);
    29                     bb=1;
    30                     break;
    31                 }    
    32                 else
    33                 {
    34                     printf("%d
    ",a[r]);
    35                     bb=1;
    36                     break;
    37                 }        
    38         }
    39         if (!bb)
    40             printf("%d
    ",a[l]); 
    41     }
    42     return 0;
    43 }
    —Anime Otaku Save The World.
  • 相关阅读:
    SpringMvc---Ant通配符
    mybatis 数据库语句
    shiro 静态页面资源不显示 解决方案
    http错误汇总
    关于代码质量与逻辑
    shiro 过滤属性的意义
    java思维导图
    E
    LCIS HDU
    E
  • 原文地址:https://www.cnblogs.com/DMoon/p/4989390.html
Copyright © 2011-2022 走看看