Submission #1893600
Source Code Expand
from functools import reduce def cross(a, b): return a.real * b.imag - a.imag * b.real def graham_scan(points): points.sort(key=lambda p: (p.real, p.imag)) lh = reduce(keep_left, points, []) uh = reduce(keep_left, reversed(points), []) lh.extend(uh[1:-1]) return lh def keep_left(hull, r): if hull: prev = hull.pop() while hull: p = hull[-1] if cross(prev - p, r - p) >= 0: hull.append(prev) break prev = hull.pop() else: hull.append(prev) if not hull or hull[-1] != r: hull.append(r) return hull def diameter(convex): n = len(convex) convex.append(convex[0]) mi = min(range(n), key=lambda i: convex[i].imag) mj = max(range(n), key=lambda i: convex[i].imag) md = abs(convex[mi] - convex[mj]) i, j = mi, mj while True: if cross(convex[i + 1] - convex[i], convex[j + 1] - convex[j]) >= 0: j = (j + 1) % n else: i = (i + 1) % n md = max(md, abs(convex[i] - convex[j])) if i == mi and j == mj: break return md n = int(input()) points = [complex(*map(int, input().split())) for _ in range(n)] if n > 2: convex = graham_scan(points) else: convex = points print(diameter(convex))
Submission Info
Submission Time | |
---|---|
Task | A - 2点間距離の最大値 ( The longest distance ) |
User | ikatakos |
Language | Python (3.4.3) |
Score | 100 |
Code Size | 1395 Byte |
Status | AC |
Exec Time | 30 ms |
Memory | 3828 KB |
Judge Result
Set Name | All | ||
---|---|---|---|
Score / Max Score | 100 / 100 | ||
Status |
|
Set Name | Test Cases |
---|---|
All | 00_max.txt, 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, 00_sample_04.txt, 00_sample_05.txt, 01_rnd_00.txt, 01_rnd_01.txt, 01_rnd_02.txt, 01_rnd_03.txt, 01_rnd_04.txt, 01_rnd_05.txt, 01_rnd_06.txt, 01_rnd_07.txt, 01_rnd_08.txt, 01_rnd_09.txt, 01_rnd_10.txt, 01_rnd_11.txt, 01_rnd_12.txt, 01_rnd_13.txt, 01_rnd_14.txt, 01_rnd_15.txt, 01_rnd_16.txt, 01_rnd_17.txt, 01_rnd_18.txt, 01_rnd_19.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
00_max.txt | AC | 30 ms | 3828 KB |
00_sample_01.txt | AC | 23 ms | 3572 KB |
00_sample_02.txt | AC | 23 ms | 3572 KB |
00_sample_03.txt | AC | 23 ms | 3572 KB |
00_sample_04.txt | AC | 23 ms | 3572 KB |
00_sample_05.txt | AC | 23 ms | 3572 KB |
01_rnd_00.txt | AC | 23 ms | 3572 KB |
01_rnd_01.txt | AC | 23 ms | 3572 KB |
01_rnd_02.txt | AC | 23 ms | 3572 KB |
01_rnd_03.txt | AC | 24 ms | 3572 KB |
01_rnd_04.txt | AC | 23 ms | 3572 KB |
01_rnd_05.txt | AC | 23 ms | 3572 KB |
01_rnd_06.txt | AC | 23 ms | 3572 KB |
01_rnd_07.txt | AC | 23 ms | 3572 KB |
01_rnd_08.txt | AC | 23 ms | 3572 KB |
01_rnd_09.txt | AC | 23 ms | 3572 KB |
01_rnd_10.txt | AC | 23 ms | 3572 KB |
01_rnd_11.txt | AC | 23 ms | 3572 KB |
01_rnd_12.txt | AC | 23 ms | 3572 KB |
01_rnd_13.txt | AC | 23 ms | 3572 KB |
01_rnd_14.txt | AC | 23 ms | 3572 KB |
01_rnd_15.txt | AC | 23 ms | 3572 KB |
01_rnd_16.txt | AC | 23 ms | 3572 KB |
01_rnd_17.txt | AC | 23 ms | 3572 KB |
01_rnd_18.txt | AC | 23 ms | 3572 KB |
01_rnd_19.txt | AC | 23 ms | 3572 KB |