func_code_string: #include <bits/stdc++.h>   #pragma GCC optimize( O3 )   using namespace std;   mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());   const long long mod = 1000000007;   long long r(pair<int, int> a) {     long long x = a.first;     long long y = a.second;     return x * x + y * y;   }   pair<int, int> operator+(pair<int, int> a, pair<int, int> b) {     return make_pair(a.first + b.first, a.second + b.second);   }   pair<int, int> operator-(pair<int, int> a, pair<int, int> b) {     return make_pair(a.first - b.first, a.second - b.second);   }   int main() {     ios_base::sync_with_stdio(false);     int N;     cin >> N;     vector<pair<pair<int, int>, vector<int>>> a;     for (int i = 1; i <= N; i++) {       int x, y;       cin >> x >> y;       a.push_back({{x, y}, {i}});     }     shuffle(a.begin(), a.end(), rng);     while (a.size() >= 3) {       int i = a.size() - 1;       int j = a.size() - 2;       int wj = 1;       pair<int, int> mnn = {1e8, 1e8};       for (int x = a.size() - 3; x < (int)a.size(); x++) {         for (int y = x + 1; y < (int)a.size(); y++) {           if (x == y) continue;           pair<int, int> v1 = a[x].first + a[y].first;           pair<int, int> v2 = a[x].first - a[y].first;           if (r(v1) < r(mnn)) {             mnn = v1;             i = x;             j = y;             wj = 1;           }           if (r(v2) < r(mnn)) {             mnn = v2;             i = x;             j = y;             wj = -1;           }         }       }       a[i].first = a[j].first = mnn;       if (a[j].second.size() < a[i].second.size()) {         for (int c : a[j].second) {           a[i].second.push_back(c * wj);         }         a.erase(a.begin() + j);       } else {         if (wj == 1) {           for (int c : a[i].second) {             a[j].second.push_back(c * wj);           }           a.erase(a.begin() + i);         } else {           a[j].first = make_pair(0, 0) - a[j].first;           for (int c : a[i].second) {             a[j].second.push_back(-c);           }           a.erase(a.begin() + i);         }       }     }     if (a.size() == 2) {       if (r(a[0].first - a[1].first) < r(a[0].first + a[1].first)) {         for (int &i : a[1].second) i *= -1;       }     }     int w[N + 1];     for (auto ii : a) {       for (int i : ii.second) {         if (i > 0)           w[i] = 1;         else           w[-i] = -1;       }     }     for (int i = 1; i <= N; i++) cout << w[i] <<    ;   }   