func_code_string: #include <bits/stdc++.h>   using namespace std;   const int maxn = 1e5 + 5;   const long long INF = 0x3f3f3f3f;   const double eps = 1e-9;   struct P {     long double x, y;     P() : x(0), y(0) {}     P(long double _x, long double _y) : x(_x), y(_y) {}     P operator+(P& p) { return P(x + p.x, y + p.y); }     P operator-(P& p) { return P(x - p.x, y - p.y); }     P operator*(long double d) { return P(x * d, y * d); }     P operator/(long double d) { return P(x / d, y / d); }     long double abs() { return sqrtl(x * x + y * y); }     long double dot(P p) { return x * p.x + y * p.y; }     long double det(P p) { return x * p.y - y * p.x; }   };   P p[maxn];   long double tg[maxn], d[maxn];   int main() {     ios::sync_with_stdio(false);     cout.setf(ios::fixed);     int n, q;     cin >> n >> q;     for (int i = 1; i <= n; i++) {       cin >> p[i].x >> p[i].y;     }     P g;     long double fzx = 0, fzy = 0, fm = 0;     for (int i = 2; i <= n - 1; i++) {       fzx += (p[1].x + p[i].x + p[i + 1].x) *              ((p[i].x - p[1].x) * (p[i + 1].y - p[1].y) -               (p[i + 1].x - p[1].x) * (p[i].y - p[1].y));       fzy += (p[1].y + p[i].y + p[i + 1].y) *              ((p[i].x - p[1].x) * (p[i + 1].y - p[1].y) -               (p[i + 1].x - p[1].x) * (p[i].y - p[1].y));     }     for (int i = 2; i <= n - 1; i++) {       fm += 3.0 * ((p[i].x - p[1].x) * (p[i + 1].y - p[1].y) -                    (p[i + 1].x - p[1].x) * (p[i].y - p[1].y));     }     g.x = fzx / fm;     g.y = fzy / fm;     for (int i = 1; i <= n; i++) {       P l(p[i] - g);       tg[i] = atan2l(l.y, l.x);       if (tg[i] < 0) tg[i] += 2 * acosl(-1);       d[i] = l.abs();     }     int s1 = 1, s2 = 2;     int flag = 0;     for (int i = 1; i <= q; i++) {       int op;       cin >> op;       if (op == 1) {         int f, t;         cin >> f >> t;         if (f == s1) swap(s1, s2);         s2 = t;         flag = 1;         g.x = p[s1].x;         g.y = p[s1].y - d[s1];         long double _tg = tg[s1] - tg[s2];         p[s2].x = g.x + d[s2] * sinl(_tg);         p[s2].y = g.y + d[s2] * cosl(_tg);       } else {         int v;         cin >> v;         if (!flag) {           cout << fixed << setprecision(6) << p[v].x <<     << p[v].y << endl;         } else {           long double _tg = tg[s1] - tg[v];           P ans;           ans.x = g.x + d[v] * sinl(_tg);           ans.y = g.y + d[v] * cosl(_tg);           cout << fixed << setprecision(6) << ans.x <<     << ans.y << endl;         }       }     }   }   