Advertisement
Guest User

PZDC

a guest
Nov 19th, 2017
53
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.21 KB | None | 0 0
  1. #include <iomanip>
  2. #include <iostream>
  3. #include <cmath>
  4. #define INT_MAX 2000000000
  5.  
  6. using namespace std;
  7.  
  8. int binary_search(int *a, int n, int x) {
  9.     auto L = -1;
  10.     auto R = n;
  11.     while (R - L > 1) {
  12.         auto M = (L + R) / 2;
  13.         if (a[M] < x)
  14.             L = M;
  15.         else
  16.             R = M;
  17.     }
  18.     return R;  
  19. }
  20.  
  21. int main() {
  22.     // n - stoila, k - cows
  23.     int n, k;
  24.     std::cin >> n >> k;
  25.     int *count = new int[n] {0};
  26.     int *a = new int[n];
  27.     for (int i = 0; i < n; i++)
  28.         cin >> a[i];
  29.     if (k <= 2) {
  30.         cout << a[n - 1] - a[0] << endl;
  31.         system("pause");
  32.         exit(0);
  33.     }
  34.     k -= 2;
  35.     count[0]++;
  36.     count[n - 1]++;
  37.     int l = 0, r = n - 1;
  38.     int dist, min = INT_MAX;
  39.     while (k != 0) {
  40.         int m = (n % 2 == 0 ? n / 2 : (n + 1) / 2);
  41.         if (abs(a[r] - a[m]) < abs(a[l] - a[m])) {
  42.             dist = abs(a[l] - a[m]);
  43.             if (dist < min)
  44.                 min = dist;
  45.             r = m;
  46.             count[r]++;
  47.         }
  48.         else {
  49.             dist = abs(a[r] - a[m]);
  50.             if (dist < min)
  51.                 min = dist;
  52.             l = m;
  53.             count[l]++;
  54.         }
  55.         k--;
  56.     }
  57.     int meet = 0, z;
  58.     for (int i = 0; i < n - 1; i++) {
  59.         if (count[i]) {
  60.             if (meet == 0)
  61.                 meet = i;
  62.             else {
  63.                 z = a[i] - a[meet];
  64.                 if (z < min)
  65.                     min = z;
  66.             }
  67.         }
  68.     }
  69.     cout << min << endl;
  70.     system("pause");
  71.     return 0;
  72. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement