#include <bits/stdc++.h>   using namespace std;   const int INF = 1000000000;   const int diri[4] = {-1, 0, 1, 0};   const int dirj[4] = {0, 1, 0, -1};   int A, B;   int va[110000], vb[110000];   bool esquerra(int a, int b) {     if (b < 0) return false;     if (a == 0) return true;     return va[a - 1] < vb[b];   }   bool dreta(int a, int b) {     if (b + 1 >= B) return false;     if (a + 1 == A) return true;     return va[a + 1] > vb[b + 1];   }   int main() {     int spam;     cin >> A >> B >> spam >> spam;     for (int i = 0; i < int(A); ++i) cin >> va[i];     for (int i = 0; i < int(B); ++i) cin >> vb[i];     vector<int> dist(B, -1);     int res = A;     int b = -1;     for (int a = 0; a < A; ++a) {       while (b + 1 < B and vb[b + 1] <= va[a]) ++b;       int d = INF;       if (0 <= b and b < B) d = min(d, abs(va[a] - vb[b]));       if (b + 1 < B) d = min(d, abs(va[a] - vb[b + 1]));       if (esquerra(a, b) and d == abs(va[a] - vb[b])) {         if (dist[b] == -1 or dist[b] == d) {           dist[b] = d;           --res;           continue;         }       }       if (dreta(a, b) and d == abs(va[a] - vb[b + 1])) {         dist[b + 1] = d;         --res;         continue;       }     }     cout << res << endl;   }   