給你乙個序列,然後給你m個元素,讓你從序列中找出與每個元素最接近的數字輸出來,如果有兩個就輸出兩個。
多組輸入,第一行給你兩個數n(0 < n < 10000000),m(0 < m < n),接下來是數列的n個數,然後再輸入m個元素,讓你找出最接近每個元素的值。如果有兩個,按從小到大輸出。
這m個數分別輸出最接近每個元素的值,組與組之間輸出乙個空行。
8 4
1 2 3 4 5 6 8 11
4 9 2 7
4 8
2 6 8
二分查詢需要判斷待求數是否小於最小的數,是否大於最大的數
否則左邊界或者右邊界會變為-1
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
int a[10000010];
int main()
if(m > a[i-1])
int l=0,r=i-1;
while(l<=r)
if(a[mid]==m)
printf("%d\n",m);
else
if(a[l]-m==m-a[r])
printf("%d %d\n",a[r],a[l]);
else
if(a[l]-mprintf("%d\n",a[l]);
else
printf("%d\n",a[r]);
}printf("\n");
}return
0;}
2781 二分練習 sdutOJ
time limit 1000ms memory limit 65536k 有疑問?點這裡 給你乙個序列,然後給你m個元素,讓你從序列中找出與每個元素最接近的數字輸出來,如果有兩個就輸出兩個。多組輸入,第一行給你兩個數n 0 n 10000000 m 0 m n 接下來是數列的n個數,然後再輸入m個...
SDUTOJ 2781 二分練習(二分)
給你乙個序列,然後給你m個元素,讓你從序列中找出與每個元素最接近的數字輸出來,如果有兩個就輸出兩個。剛開始是 wa 了好久,看了部落格,聽學長講完才知道做法,這裡當作乙個二分的模板。include using namespace std int data 10000000 10 int find l...
sdut 二分練習
problem description 給你乙個序列,然後給你m個元素,讓你從序列中找出與每個元素最接近的數字輸出來,如果有兩個就輸出兩個。input 多組輸入,第一行給你兩個數n 0 n 10000000 m 0 m n 接下來是數列的n個數,然後再輸入m個元素,讓你找出最接近每個元素的值。如果有...