結果
問題 | No.55 正方形を描くだけの簡単なお仕事です。 |
ユーザー |
|
提出日時 | 2020-05-10 16:11:21 |
言語 | Python3 (3.13.1 + numpy 2.2.1 + scipy 1.14.1) |
結果 |
AC
|
実行時間 | 36 ms / 5,000 ms |
コード長 | 1,980 bytes |
コンパイル時間 | 107 ms |
コンパイル使用メモリ | 12,672 KB |
実行使用メモリ | 11,264 KB |
最終ジャッジ日時 | 2024-07-07 20:26:41 |
合計ジャッジ時間 | 2,439 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 21 |
ソースコード
import sys, refrom collections import deque, defaultdict, Counterfrom math import ceil, sqrt, hypot, factorial, pi, sin, cos, radians, gcd, logfrom itertools import accumulate, permutations, combinations, productfrom operator import itemgetter, mul, addfrom copy import deepcopyfrom string import ascii_lowercase, ascii_uppercase, digitsfrom bisect import bisect, bisect_leftfrom heapq import heappush, heappopfrom functools import reduce, lru_cachedef input(): return sys.stdin.readline().strip()def INT(): return int(input())def MAP(): return map(int, input().split())def LIST(): return list(map(int, input().split()))def ZIP(n): return zip(*(MAP() for _ in range(n)))sys.setrecursionlimit(10 ** 9)INF = float('inf')mod = 10 ** 9 + 7X1, Y1, X2, Y2, X3, Y3 = MAP()def isRightAngle(v1, v2):x1, y1 = v1x2, y2 = v2return x1*x2+y1*y2==0def veclen(v):return hypot(v[0], v[1])def vecsum(v1, v2):x1, y1 = v1x2, y2 = v2return (x1+x2, y1+y2)def vecrev(v):return (-v[0], -v[1])vec1 = (X1-X2, Y1-Y2)vec2 = (X1-X3, Y1-Y3)vec3 = (X2-X3, Y2-Y3)if isRightAngle(vec1, vec2):if veclen(vec1) == veclen(vec2):for p1, p2 in product([vecsum((X2, Y2), vec2), vecsum((X2, Y2), vecrev(vec2))], [vecsum((X3, Y3), vec1), vecsum((X3, Y3), vecrev(vec1))]):if p1 == p2 and p1 != (X1, Y1):print(p1[0], p1[1])breakelse:print(-1)elif isRightAngle(vec1, vec3):if veclen(vec1) == veclen(vec3):for p1, p2 in product([vecsum((X1, Y1), vec3), vecsum((X1, Y1), vecrev(vec3))], [vecsum((X3, Y3), vec1), vecsum((X3, Y3), vecrev(vec1))]):if p1 == p2 and p1 != (X2, Y2):print(p1[0], p1[1])breakelse:print(-1)elif isRightAngle(vec2, vec3):if veclen(vec2) == veclen(vec3):for p1, p2 in product([vecsum((X2, Y2), vec2), vecsum((X2, Y2), vecrev(vec2))], [vecsum((X1, Y1), vec3), vecsum((X1, Y1), vecrev(vec3))]):if p1 == p2 and p1 != (X3, Y3):print(p1[0], p1[1])breakelse:print(-1)else:print(-1)