Advertisement
YEZAELP

SMMR-199: Pakiny & List

May 22nd, 2021
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.40 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. const int N = 1e5;
  5. const int INF = 2e9;
  6. int pos[N+10], neg[N+10];
  7. int lp, ln;
  8.  
  9. int MX(int x){
  10.     int l = 1, r = ln, mx = -INF;
  11.     while(l <= r){
  12.         int mid = (l + r)/2;
  13.         if(neg[mid] < x){
  14.             mx = max(mx, neg[mid]);
  15.             l = mid + 1;
  16.         }
  17.         else r = mid - 1;
  18.     }
  19.     return mx;
  20. }
  21.  
  22. int MN(int x){
  23.     int l = 1, r = ln, mn = INF;
  24.     while(l <= r){
  25.         int mid = (l + r)/2;
  26.         if(neg[mid] > x){
  27.             mn = min(mn, neg[mid]);
  28.             r = mid - 1;
  29.         }
  30.         else l = mid + 1;
  31.     }
  32.     return mn;
  33. }
  34.  
  35. int main(){
  36.  
  37.     int n;
  38.     scanf("%d", &n);
  39.  
  40.     for(int i=1;i<=n;i++) {
  41.         int x;
  42.         scanf("%d", &x);
  43.         if(x >= 0) {
  44.             lp ++;
  45.             pos[lp] = x;
  46.         }
  47.         else {
  48.             ln ++;
  49.             neg[ln] = -x;
  50.         }
  51.     }
  52.  
  53.     sort(pos+1, pos+lp+1);
  54.     sort(neg+1, neg+ln+1);
  55.  
  56.     int mn = INF;
  57.  
  58.     for(int i=1;i<lp;i++){
  59.         mn = min(mn, abs(pos[i] - pos[i+1]));
  60.     }
  61.  
  62.     for(int i=1;i<ln;i++){
  63.         mn = min(mn, abs(neg[i] - neg[i+1]));
  64.     }
  65.  
  66.     for(int i=1;i<=ln;i++){
  67.         int mxx = MX(pos[i]);
  68.         int mnn = MN(pos[i]);
  69.         if(mxx != -INF) mn = min(mn, abs(pos[i] + mxx));
  70.         if(mnn != INF) mn = min(mn, abs(pos[i] + mnn));
  71.     }
  72.  
  73.     printf("%d", mn);
  74.  
  75.     return 0;
  76. }
  77.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement