結果
問題 | No.2769 Number of Rhombi |
ユーザー | detteiuu |
提出日時 | 2024-07-03 16:51:16 |
言語 | Python3 (3.12.2 + numpy 1.26.4 + scipy 1.12.0) |
結果 |
AC
|
実行時間 | 4,375 ms / 5,000 ms |
コード長 | 1,370 bytes |
コンパイル時間 | 120 ms |
コンパイル使用メモリ | 12,672 KB |
実行使用メモリ | 272,836 KB |
最終ジャッジ日時 | 2024-07-03 16:53:22 |
合計ジャッジ時間 | 114,763 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 33 ms
11,392 KB |
testcase_01 | AC | 32 ms
11,264 KB |
testcase_02 | AC | 31 ms
11,392 KB |
testcase_03 | AC | 3,392 ms
70,272 KB |
testcase_04 | AC | 2,975 ms
66,432 KB |
testcase_05 | AC | 2,091 ms
49,664 KB |
testcase_06 | AC | 3,084 ms
60,032 KB |
testcase_07 | AC | 3,493 ms
71,040 KB |
testcase_08 | AC | 3,361 ms
71,296 KB |
testcase_09 | AC | 3,712 ms
72,320 KB |
testcase_10 | AC | 3,283 ms
74,752 KB |
testcase_11 | AC | 3,671 ms
77,184 KB |
testcase_12 | AC | 3,810 ms
81,656 KB |
testcase_13 | AC | 3,971 ms
89,640 KB |
testcase_14 | AC | 3,988 ms
108,196 KB |
testcase_15 | AC | 4,231 ms
115,244 KB |
testcase_16 | AC | 3,669 ms
127,372 KB |
testcase_17 | AC | 3,987 ms
149,292 KB |
testcase_18 | AC | 4,375 ms
188,844 KB |
testcase_19 | AC | 3,858 ms
200,692 KB |
testcase_20 | AC | 4,165 ms
225,608 KB |
testcase_21 | AC | 4,250 ms
242,160 KB |
testcase_22 | AC | 3,888 ms
257,308 KB |
testcase_23 | AC | 3,831 ms
272,836 KB |
testcase_24 | AC | 31 ms
11,392 KB |
testcase_25 | AC | 3,350 ms
89,536 KB |
testcase_26 | AC | 3,602 ms
97,544 KB |
testcase_27 | AC | 3,682 ms
152,420 KB |
testcase_28 | AC | 3,921 ms
124,196 KB |
testcase_29 | AC | 4,125 ms
226,504 KB |
testcase_30 | AC | 3,700 ms
134,552 KB |
testcase_31 | AC | 4,020 ms
82,060 KB |
testcase_32 | AC | 3,191 ms
71,424 KB |
testcase_33 | AC | 3,273 ms
71,168 KB |
testcase_34 | AC | 3,272 ms
73,600 KB |
ソースコード
from decimal import Decimal from collections import defaultdict from bisect import bisect_left, bisect_right N = int(input()) XY = [list(map(int, input().split())) for _ in range(N)] def vec(a, b): return (b[0]-a[0], b[1]-a[1]) D1 = defaultdict(list) D2 = defaultdict(list) for i in range(N-1): X1, Y1 = XY[i] for j in range(i+1, N): X2, Y2 = XY[j] if Y1 == Y2: center = (Decimal(X1)+Decimal(X2))/2 D1[(center, Y1)].append(0) else: x1, y1, x2, y2 = X1, Y1, X2, Y2 if y2 < y1: x1, y1, x2, y2 = x2, y2, x1, y1 if x1 == x2: center = (Decimal(y1)+Decimal(y2))/2 D2[(x1, center)].append(0) else: cX = (Decimal(x1)+Decimal(x2))/2 cY = (Decimal(y1)+Decimal(y2))/2 if x1 < x2: vX, vY = vec((x1, y1), (x2, y2)) V = Decimal(vX)/Decimal(vY) D1[(cX, cY)].append(V) else: vX, vY = vec((y1, -x1), (y2, -x2)) V = Decimal(vX)/Decimal(vY) D2[(cX, cY)].append(V) for k in D2.keys(): D2[k].sort() ans = 0 for k in D1.keys(): if k in D2: for i in D1[k]: ans += bisect_right(D2[k], i)-bisect_left(D2[k], i) print(ans)