func_code_string: #include <bits/stdc++.h>   using namespace std;   int n;   int x[20005], y[20005], c[20005], ans[20005], LOC;   bool cmp(const int &u, const int &v) {     return (x[u] - x[LOC]) * (y[v] - y[LOC]) - (y[u] - y[LOC]) * (x[v] - x[LOC]) <            0;   }   void solve(int l, int r) {     if (l > r) return;     int loc = l;     for (int i = (l), LIM = (r); i <= LIM; i++)       if (x[c[i]] < x[c[loc]]) loc = i;     swap(c[loc], c[l]);     LOC = c[l];     sort(c + l + 1, c + r + 1, cmp);     int s0 = 0, s1 = 0, k = -100000;     for (int i = (l + 1), LIM = (r); i <= LIM; i++) {       if (s0 == s1 && ((c[i] <= n) ^ (c[l] <= n))) {         if (k == -100000 || max(k - l - 1, r - k) > max(i - l - 1, r - i)) k = i;       }       if (c[i] <= n)         s0++;       else         s1++;     }     ans[c[l]] = c[k], ans[c[k]] = c[l];     solve(l + 1, k - 1), solve(k + 1, r);   }   int main() {     scanf( %d , &n);     for (int i = (1), LIM = (2 * n); i <= LIM; i++)       scanf( %d%d , &x[i], &y[i]), c[i] = i;     solve(1, 2 * n);     for (int i = (1), LIM = (n); i <= LIM; i++) printf( %d n , ans[i] - n);   }   