結果
問題 | No.471 直列回転機 |
ユーザー |
![]() |
提出日時 | 2017-03-21 17:27:14 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 891 ms / 3,141 ms |
コード長 | 1,203 bytes |
コンパイル時間 | 396 ms |
コンパイル使用メモリ | 82,304 KB |
実行使用メモリ | 99,168 KB |
平均クエリ数 | 19588.37 |
最終ジャッジ日時 | 2024-06-11 10:35:38 |
合計ジャッジ時間 | 28,476 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 1 |
other | AC * 58 |
ソースコード
# -*- coding: utf-8 -*-def idou(x,y,dx,dy):x2 = x + dxy2 = y + dyreturn x2,y2def Kaiten(x,y,t):if t == 90:x2 = -yy2 = xreturn x2,y2elif t == 180:x2 = -xy2 = -yreturn x2,y2elif t == 270:x2 = yy2 = -xreturn x2,y2elif t == 0:return x,yM = int(input())P = []for m in range(M):x,y = map(int,input().split())P.append([x,y])print("?",P[0][0],P[0][1],flush = True)x1,y1 = map(int,input().split())if M == 1:print("!",flush =True)print(x1,y1,flush = True)elif M > 1:print("?",P[1][0],P[1][1],flush = True)x2,y2 = map(int,input().split())arg = [P[0][0] - P[1][0],P[0][1] - P[1][1],x1 - x2, y1 - y2]if arg[0] == arg[2] and arg[1] == arg[3]:kaiten = 0elif arg[0] == arg[3] and arg[1] == -arg[2]:kaiten = 90elif arg[0] == -arg[3] and arg[1] == arg[2]:kaiten = 270elif arg[0] == -arg[2] and arg[1] == -arg[3]:kaiten = 180a,b = P[0][0],P[0][1]for i,p in enumerate(P):P[i][0],P[i][1] = idou(p[0],p[1],-a,-b)for i,p in enumerate(P):P[i][0],P[i][1] = Kaiten(p[0],p[1],kaiten)for i,p in enumerate(P):P[i][0],P[i][1] = idou(p[0],p[1],x1,y1)print("!",flush = True)for p in P:print(p[0],p[1],flush = True)