func_code_string: #include <bits/stdc++.h>   using namespace std;   const int MOD = 1e9 + 7;   double gmin = 100000000000000017;   int a, b;   int Y1[100005], Y2[100005], L[100005];   double dist(double x1, double y1, double x2, double y2) {     return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));   }   double f(int i, int j) {     return dist(0, 0, a, Y1[i]) + L[j] + dist(a, Y1[i], b, Y2[j]);   }   int main() {     int t, i, j, c, d, idx1, idx2, m, n, idx;     scanf( %d , &n);     scanf( %d , &m);     scanf( %d , &a);     scanf( %d , &b);     for (i = 0; i < n; i++) scanf( %d , &Y1[i]);     for (i = 0; i < m; i++) scanf( %d , &Y2[i]);     for (i = 0; i < m; i++) scanf( %d , &L[i]);     for (i = 0; i < m; i++) {       int low = 0, high = n - 1;       while (high - low >= 3) {         int m1 = low + (high - low) / 3;         int m2 = high - (high - low) / 3;         if (f(m1, i) < f(m2, i))           high = m2;         else           low = m1;       }       double mini = 1000000000000;       for (j = low; j <= high; ++j) {         if (f(j, i) < mini) {           mini = f(j, i);           idx = j;         }       }       if (mini < gmin) {         gmin = mini;         idx1 = idx + 1;         idx2 = i + 1;       }     }     printf( %d  , idx1);     printf( %d  , idx2);     return 0;   }   