結果
問題 |
No.3154 convex polygon judge
|
ユーザー |
![]() |
提出日時 | 2025-05-21 04:12:37 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 922 ms / 2,000 ms |
コード長 | 1,067 bytes |
コンパイル時間 | 723 ms |
コンパイル使用メモリ | 82,148 KB |
実行使用メモリ | 112,952 KB |
最終ジャッジ日時 | 2025-05-21 04:12:46 |
合計ジャッジ時間 | 8,149 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 44 |
ソースコード
#yukicoder 3154 convex polygon judge #Convex Hull: 凸包を求める SortedP: (x, y)を辞書順昇順に並べた点群 def Convex_Hull(SortedP): outer_product = lambda x1, y1, x2, y2: x1 * y2 - x2 * y1 stack = [] for x, y in SortedP: #上側凸包 while len(stack) > 1: x1, y1 = stack[-2] x2, y2 = stack[-1] if outer_product(x2 - x1, y2 - y1, x - x2, y - y2) >= 0: stack.pop() # > を >= にすると経路上の点を削除できる else: break stack.append((x, y)) T = len(stack) for x, y in SortedP[-2::-1]: #下側凸包 while len(stack) > T: x1, y1 = stack[-2] x2, y2 = stack[-1] if outer_product(x2 - x1, y2 - y1, x - x2, y - y2) >= 0: stack.pop() else: break stack.append((x, y)) return stack[:-1] #テスト1: 凸包貼るだけ N = int(input()) P = [tuple(map(int, input().split())) for _ in range(N)] print('Yes' if len( Convex_Hull(sorted(P)) ) == N else 'No')