結果
| 問題 | 
                            No.675 ドットちゃんたち
                             | 
                    
| コンテスト | |
| ユーザー | 
                             rlangevin
                         | 
                    
| 提出日時 | 2023-09-14 12:08:20 | 
| 言語 | PyPy3  (7.3.15)  | 
                    
| 結果 | 
                             
                                AC
                                 
                             
                            
                         | 
                    
| 実行時間 | 502 ms / 2,000 ms | 
| コード長 | 847 bytes | 
| コンパイル時間 | 168 ms | 
| コンパイル使用メモリ | 81,664 KB | 
| 実行使用メモリ | 113,344 KB | 
| 最終ジャッジ日時 | 2024-07-01 19:34:39 | 
| 合計ジャッジ時間 | 5,004 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge1 / judge3 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 4 | 
| other | AC * 8 | 
ソースコード
N, px, py = map(int, input().split())
C = []
for i in range(N):
    C.append(list(map(int, input().split())))
C.reverse()
n = 0
def Mat(x, y, f):
    if f == 1:
        return [[0, 1, 0], [-1, 0, 0], [0, 0, 1]]
    return [[1, 0, x], [0, 1, y], [0, 0, 1]]
def Matprod(A, B):
    N = len(A)
    C = [[0] * len(B[0]) for i in range(N)]
    for i in range(N):
        for j in range(len(B[0])):
            for k in range(N):
                C[i][j] += A[i][k] * B[k][j]
    return C
ans = []
now = [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
for c in C:
    if c[0] == 3:
        now = Matprod(now, Mat(-1, -1, 1))
    elif c[0] == 1:
        now = Matprod(now, Mat(c[1], 0, 0))
    else:
        now = Matprod(now, Mat(0, c[1], 0))
    x, y, _ = Matprod(now, [[px], [py], [1]])
    ans.append((x, y))
ans.reverse()
for x, y in ans:
    print(x[0], y[0]) 
            
            
            
        
            
rlangevin