結果
| 問題 | No.675 ドットちゃんたち | 
| コンテスト | |
| ユーザー |  lam6er | 
| 提出日時 | 2025-03-20 20:27:06 | 
| 言語 | PyPy3 (7.3.15) | 
| 結果 | 
                                AC
                                 
                             | 
| 実行時間 | 287 ms / 2,000 ms | 
| コード長 | 1,251 bytes | 
| コンパイル時間 | 215 ms | 
| コンパイル使用メモリ | 82,344 KB | 
| 実行使用メモリ | 95,660 KB | 
| 最終ジャッジ日時 | 2025-03-20 20:28:47 | 
| 合計ジャッジ時間 | 3,551 ms | 
| ジャッジサーバーID (参考情報) | judge1 / judge2 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 4 | 
| other | AC * 8 | 
ソースコード
def rotate_point(r, x, y):
    if r == 0:
        return x, y
    elif r == 1:
        return y, -x
    elif r == 2:
        return -x, -y
    else:  # r == 3
        return -y, x
n, Px, Py = map(int, input().split())
commands = []
for _ in range(n):
    parts = input().split()
    if parts[0] == '1':
        dx = int(parts[1])
        commands.append(('1', dx))
    elif parts[0] == '2':
        dy = int(parts[1])
        commands.append(('2', dy))
    else:
        commands.append(('3',))
# Initialize transformations array
transformations = [(0, 0, 0)] * (n + 1)
transformations[n] = (0, 0, 0)
for i in range(n - 1, -1, -1):
    cmd = commands[i]
    r_t, dx_t, dy_t = 0, 0, 0
    if cmd[0] == '1':
        dx_t = cmd[1]
    elif cmd[0] == '2':
        dy_t = cmd[1]
    elif cmd[0] == '3':
        r_t = 1
    r_next, dx_next, dy_next = transformations[i + 1]
    composed_r = (r_t + r_next) % 4
    rotated_dx, rotated_dy = rotate_point(r_next, dx_t, dy_t)
    new_dx = rotated_dx + dx_next
    new_dy = rotated_dy + dy_next
    transformations[i] = (composed_r, new_dx, new_dy)
for k in range(n):
    r, dx, dy = transformations[k]
    px_rot, py_rot = rotate_point(r, Px, Py)
    ax = px_rot + dx
    ay = py_rot + dy
    print(ax, ay)
            
            
            
        