func_code_string: #include <bits/stdc++.h>   using namespace std;   int x[100100], y[100100], id[100100];   bool cmp(int i, int j) {     if (y[i] >= 0 && y[j] < 0)       return true;     else if (y[i] < 0 && y[j] >= 0)       return false;     if (y[i] == 0 && y[j] == 0) {       return x[j] < 0;     }     return x[i] * y[j] >= x[j] * y[i];   }   bool cmp_frac(long long ap, long long aq, long long bp, long long bq) {     if (ap >= 0 && bp < 0) return false;     if (ap < 0 && bp >= 0) return true;     if (ap < 0 && bp < 0) return cmp_frac(-bp, bq, -ap, aq);     long long as = ap / aq, ar = ap % aq, bs = bp / bq, br = bp % bq;     if (as < bs)       return true;     else if (as > bs)       return false;     if (br == 0)       return false;     else if (ar == 0)       return true;     return cmp_frac(bq, br, aq, ar);   }   int main() {     int n;     long long ap, aq, tp, tq;     int now = -1;     scanf( %d , &n);     for (int i = 0; i < n; i++) scanf( %d%d , &x[i], &y[i]), id[i] = i;     sort(id, id + n, cmp);     for (int i = 0; i < n; i++) {       int a = id[i], b = id[(i + 1) % n];       tp = x[a] * x[b] + y[a] * y[b];       if (tp > 0)         tp = tp * tp;       else         tp = -tp * tp;       tq = 1LL * (x[a] * x[a] + y[a] * y[a]) * (x[b] * x[b] + y[b] * y[b]);       if (now == -1 || cmp_frac(ap, aq, tp, tq)) {         ap = tp;         aq = tq;         now = i;       }     }     printf( %d %d n , id[now] + 1, id[(now + 1) % n] + 1);     return 0;   }   