#define _USE_MATH_DEFINES #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; // 行列の積 template vector > matrixProduct(const vector >& x, const vector >& y) { int a = x.size(); int b = x[0].size(); int c = y[0].size(); vector > z(a, vector(c, 0)); for(int i=0; i> n >> px >> py; vector > > v(n); for(int i=0; i> type >> d; if(type == 1) v[i] = {{1, 0, d}, {0, 1, 0}, {0, 0, 1}}; else if(type == 2) v[i] = {{1, 0, 0}, {0, 1, d}, {0, 0, 1}}; else v[i] = {{0, 1, 0}, {-1, 0, 0}, {0, 0, 1}}; } vector > ans(n); vector > mat = {{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}; for(int i=n-1; i>=0; --i){ mat = matrixProduct(mat, v[i]); ans[i].first = mat[0][0] * px + mat[0][1] * py + mat[0][2]; ans[i].second = mat[1][0] * px + mat[1][1] * py + mat[1][2]; } for(int i=0; i