SDUT 2781 二分練習

2021-08-21 17:14:42 字數 1001 閱讀 5977

給你乙個序列,然後給你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個元素,讓你找出最接近每個元素的值。如果有...