func_code_string: #include <bits/stdc++.h>   using namespace std;   long long int mod = 1e8 + 5e4 + 1;   const double error = 1e-7;   const double PI = acos(-1);   mt19937 rng(chrono::system_clock::now().time_since_epoch().count());   inline long long int MOD(long long int x, long long int m = mod) {     long long int y = x % m;     return (y >= 0) ? y : y + m;   }   const int inf = 0x3f3f3f3f;   const unsigned long long int infl = 1e18 + 1;   const int nmax = 2e3 + 5;   typedef long long int T;   bool lexcomp(const complex<T> &p, const complex<T> &q) {     return make_pair(p.real(), p.imag()) < make_pair(q.real(), q.imag());   }   complex<T> origin, ray;   inline bool half(complex<T> p) {     return ((conj(ray) * (p)).imag()) < 0 ||            (((conj(ray) * (p)).imag()) == 0 && ((conj(ray) * (p)).real()) > 0);   }   bool polarComp(complex<T> p, complex<T> q) {     p -= origin;     q -= origin;     return make_tuple(half(p), 0) < make_tuple(half(q), ((conj(p) * (q)).imag()));   }   vector<complex<T> > points;   vector<int> ans;   vector<int> input;   char str[nmax];   int main() {     int n;     cin >> n;     points.resize(n + 1);     for (int i = 1; i <= n; i++) {       int x, y;       cin >> x >> y;       points[i] = complex<T>(x, y);       input.push_back(i);     }     cin >> str;     int pid =         min_element(input.begin(), input.end(),                     [&](int i, int j) { return lexcomp(points[i], points[j]); }) -         input.begin();     ans.push_back(input[pid]);     origin = points[input[pid]];     ray = complex<T>(0, -1);     input.erase(input.begin() + pid);     for (int i = 0; i < n - 2; i++) {       if (str[i] ==  L )         pid = min_element(                   input.begin(), input.end(),                   [&](int i, int j) { return polarComp(points[i], points[j]); }) -               input.begin();       else         pid = max_element(                   input.begin(), input.end(),                   [&](int i, int j) { return polarComp(points[i], points[j]); }) -               input.begin();       ray = -points[ans.back()] + points[input[pid]];       ans.push_back(input[pid]);       origin = points[input[pid]];       input.erase(input.begin() + pid);     }     ans.push_back(input[0]);     for (int x : ans) cout << x <<    ;   }   