結果
| 問題 |
No.245 貫け!
|
| コンテスト | |
| ユーザー |
lam6er
|
| 提出日時 | 2025-03-20 20:22:49 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
TLE
|
| 実行時間 | - |
| コード長 | 1,852 bytes |
| コンパイル時間 | 168 ms |
| コンパイル使用メモリ | 83,032 KB |
| 実行使用メモリ | 91,528 KB |
| 最終ジャッジ日時 | 2025-03-20 20:25:02 |
| 合計ジャッジ時間 | 12,870 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 8 TLE * 1 -- * 7 |
ソースコード
from fractions import Fraction
import sys
def main():
input = sys.stdin.read().split()
ptr = 0
N = int(input[ptr])
ptr += 1
segments = []
for _ in range(N):
a = int(input[ptr])
b = int(input[ptr+1])
c = int(input[ptr+2])
d = int(input[ptr+3])
ptr += 4
p1 = (Fraction(a), Fraction(b))
p2 = (Fraction(c), Fraction(d))
segments.append((p1, p2))
candidate_points = set()
for seg in segments:
p1, p2 = seg
candidate_points.add((p1[0], p1[1]))
candidate_points.add((p2[0], p2[1]))
mid_x = (p1[0] + p2[0]) / Fraction(2)
mid_y = (p1[1] + p2[1]) / Fraction(2)
candidate_points.add((mid_x, mid_y))
points = list(candidate_points)
max_count = 0
for i in range(len(points)):
p1 = points[i]
x1, y1 = p1
for j in range(i + 1, len(points)):
p2 = points[j]
x2, y2 = p2
if x1 == x2 and y1 == y2:
continue
dx = x2 - x1
dy = y2 - y1
a = dy
b = -dx
c = dx * y1 - dy * x1
count = 0
for seg in segments:
(s_p1, s_p2) = seg
x_a, y_a = s_p1
x_b, y_b = s_p2
valA = a * x_a + b * y_a + c
valB = a * x_b + b * y_b + c
if valA == 0 or valB == 0:
count += 1
continue
if valA * valB < 0:
count += 1
if count > max_count:
max_count = count
if max_count == 0 and N >= 1:
max_count = 1
print(max_count)
if __name__ == "__main__":
main()
lam6er