func_code_string: #include <bits/stdc++.h>   using namespace std;   const int maxn = 2010;   struct Point {     long long x, y;     int id;     Point(int _x = 0, int _y = 0, int _id = 0) : x(_x), y(_y), id(_id) {}     void read(int i) {       id = i;       scanf( %lld%lld , &x, &y);     }   } ps[maxn];   Point operator-(Point a, Point b) { return Point(a.x - b.x, a.y - b.y); }   long long cross(Point a, Point b) { return a.x * b.y - a.y * b.x; }   Point base;   bool cmp(Point a, Point b) { return cross(a - base, b - base) > 0; }   char s[maxn];   int vis[maxn], ans[maxn];   Point t[maxn];   int main() {     int n;     scanf( %d , &n);     for (int i = 1; i <= n; i++) {       ps[i].read(i);     }     Point start = ps[1];     for (int i = 2; i <= n; i++) {       if (ps[i].y < start.y) start = ps[i];     }     ans[1] = start.id;     vis[start.id] = 1;     base = start;     scanf( %s , s + 1);     for (int i = 2; i < n; i++) {       int cnt = 0;       for (int j = 1; j <= n; j++)         if (!vis[j]) t[cnt++] = ps[j];       sort(t, t + cnt, cmp);       if (s[i - 1] ==  L ) {         ans[i] = t[0].id;         vis[t[0].id] = 1;         base = t[0];       } else {         ans[i] = t[cnt - 1].id;         vis[t[cnt - 1].id] = 1;         base = t[cnt - 1];       }     }     for (int i = 1; i <= n; i++)       if (!vis[i]) ans[n] = i;     for (int i = 1; i <= n; i++) printf( %d  , ans[i]);     printf(  n );     return 0;   }   