Advertisement
Guest User

Untitled

a guest
Aug 19th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. int binarysearch(int K, int* array, int N){
  6.   int l = 0,  R = N - 1;
  7.   int m = l + (R - l) / 2;
  8.   while(R >= l){
  9.       m = l + (R - l) / 2;
  10.       if(K > array[m]){
  11.         l = m + 1;
  12.       } else {
  13.         R = m - 1 ;
  14.       }
  15.   }
  16.  
  17.   if(N == 1){
  18.       return array[0];
  19.   }
  20.  
  21.   if(N == 2){
  22.       int k1 = abs(array[0] - K);
  23.       int k2 = abs(array[1] - K);
  24.       if (k1 == min(k1, k2)) {
  25.           return array[0];
  26.       } else {
  27.           return array[1];
  28.       }
  29.   }
  30.  
  31.   if (m >= 1 && m <= N - 2) {
  32.       int k1 = abs(array[m - 1] - K);
  33.       int k2 = abs(array[m] - K);
  34.       int k3 = abs(array[m + 1] - K);
  35.       if(k1 == min(k1, min(k2, k3))){
  36.               return array[m - 1];
  37.     }
  38.       if(k2 == min(k1, min(k2, k3))){
  39.               return array[m];
  40.     }
  41.       if(k3 == min(k1, min(k2, k3))){
  42.               return array[m + 1];
  43.     }
  44.   } else if (m == 0) {
  45.       int k2 = abs(array[m] - K);
  46.       int k3 = abs(array[m + 1] - K);
  47.       if (k2 == min(k2, k3)) {
  48.           return array[m];
  49.       } else {
  50.           return array[m + 1];
  51.       }
  52.   } else if (m == N - 1) {
  53.       int k1 = abs(array[m - 1] - K);
  54.       int k2 = abs(array[m] - K);
  55.       if (k1 == min(k1, k2)) {
  56.           return array[m - 1];
  57.       } else {
  58.           return array[m];
  59.       }
  60.    }
  61.  
  62. }
  63.  
  64. int main() {
  65.   int N, K;
  66.   cin >> N >> K;
  67.   int array[N];
  68.   for(int i = 0; i < N; i++){
  69.       cin >> array[i];
  70.   }
  71.   int Z;
  72.   while(K > 0){
  73.       cin >> Z;
  74.       cout << (binarysearch(Z, array, N)) << endl;
  75.       K--;
  76.   }
  77. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement