func_code_string: #include <bits/stdc++.h>   namespace io {   template <typename T>   inline void read(T& a) {     int c = getchar(), sign = 0;     a = 0;     while (c <  0  || c >  9 ) sign += (c ==  - ), c = getchar();     while (c >=  0  && c <=  9 ) a = (a << 1) + (a << 3) + c - 48, c = getchar();     if (sign & 1) a = -a;   }   template <typename T, typename... _T>   inline void read(T& a, _T&... argc) {     read(a);     read(argc...);   }   template <typename T>   inline void Write(T a) {     if (a > 9) Write(a / 10);     putchar(a % 10 +  0 );   }   template <typename T>   inline void write(T a, char ch =    ) {     if (a < 0) putchar( - ), a = -a;     Write(a);     putchar(ch);   }   }  // namespace io   using namespace io;   using namespace std;   const int maxn = 2e3;   const int mod = 1e9 + 7;   int n, d, m, a[maxn + 3], b[maxn + 3];   int dem[maxn + 3], id[maxn + 3];   int k, h;   int res = 2e9;   long long dp[maxn + 5], t[maxn + 3];   string second;   bool kt[maxn + 3];   map<int, int> maps;   vector<int> edge[maxn + 3];   map<int, int>::iterator it;   template <typename T>   void answer(T x) {     cout << x;     exit(0);   }   void putstring(string x, char ch =    ) {     for (char c : x) putchar(c);     putchar(ch);   }   struct T {     long long x, y;     T operator-(const T& other) const { return {x - other.x, y - other.y}; }     long long operator*(const T& other) const {       return x * other.y - y * other.x;     }     int direct_vector(const T& a, const T& b) const {       long long ans = (a - *this) * (b - *this);       return ans > 0;     }   } v[maxn + 3];   int main() {     ios_base::sync_with_stdio(false), cin.tie(NULL);     cin >> n;     for (int i = 1; i <= n; ++i) cin >> v[i].x >> v[i].y;     cin >> second;     int chot = min_element(v + 1, v + n + 1,                            [](const T& a, const T& b) {                              return a.x != b.x ? a.x < b.x : a.y < b.y;                            }) -                v;     kt[chot] = true;     write(chot);     for (int i = 0; i < second.size(); i++) {       int cc = -1, p = (second[i] ==  L );       for (int j = 1; j <= n; ++j) {         if (kt[j]) continue;         if (cc == -1) {           cc = j;           continue;         }         if (p == v[chot].direct_vector(v[j], v[cc])) {           cc = j;         }       }       kt[cc] = true;       chot = cc;       write(chot);     }     for (int i = 1; i <= n; ++i)       if (!kt[i]) write(i);   }   