https://beta.atcoder.jp/contests/abc108/tasks/abc108_b
解法
https://beta.atcoder.jp/contests/abc108/submissions/3127271
回転行列を知らないと解くのは難しい。
dx=d2-d1, dy=y2-y1とした、(dx, dy)というベクトルを考える。
すると、(x2,y2)から(x3,y3)へのベクトルは、反時計回りに90度回転したものになる。
これは回転行列を使うと解決できる。
具体的には90度回転すると、dx=-dy, dy=dxになる。
なので、「回転して足して答える」を2回やるとACが取れる。
int xx1, yy1, x2, y2; //--------------------------------------------------------------------------------------------------- void _main() { cin >> xx1 >> yy1 >> x2 >> y2; int dx = x2 - xx1, dy = y2 - yy1; int x = x2, y = y2; rep(i, 0, 2) { int _dx = -dy; int _dy = dx; dx = _dx; dy = _dy; x = x + dx; y = y + dy; printf("%d %d", x, y); if (i == 0) printf(" "); else printf("\n"); } }