func_code_string: #include <bits/stdc++.h>   using namespace std;   struct point {     int x, y;     int num;     int mark;   };   point p[100010];   int ans[100010];   point pt;   int sum1, sum2;   bool cmp(point a, point b) {     return (a.x - pt.x) * (b.y - pt.y) - (a.y - pt.y) * (b.x - pt.x) < 0;   }   bool cmp2(point a, point b) { return a.y != b.y ? a.y < b.y : a.x < b.x; }   void work(int l, int r) {     if (r < l) return;     int maxi = 0;     int marki = 0;     maxi = min_element(p + l, p + r + 1, cmp2) - p;     swap(p[maxi], p[l]);     pt = p[l];     int k;     sort(p + l + 1, p + r + 1, cmp);     sum1 = sum2 = 0;     for (k = r; !(pt.mark != p[k].mark && sum1 == sum2); k--)       if (p[k].mark == pt.mark)         sum1++;       else         sum2++;     marki = k;     if (pt.mark)       ans[p[k].num] = pt.num;     else       ans[pt.num] = p[k].num;     work(l + 1, marki - 1);     work(marki + 1, r);   }   int main() {     ios::sync_with_stdio(false);     cin.tie(0);     cout.tie(0);     int n;     cin >> n;     for (int i = (1); i <= (2 * n); ++i) {       cin >> p[i].x >> p[i].y;       p[i].mark = (i > n);       p[i].num = i > n ? i - n : i;     }     work(1, 2 * n);     for (int i = (1); i <= (n); ++i) {       cout << ans[i] <<   n ;     }   }   