結果

問題 No.3154 convex polygon judge
ユーザー catupper
提出日時 2025-05-20 22:05:38
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 860 ms / 2,000 ms
コード長 656 bytes
コンパイル時間 411 ms
コンパイル使用メモリ 82,480 KB
実行使用メモリ 108,660 KB
最終ジャッジ日時 2025-05-20 22:05:46
合計ジャッジ時間 7,799 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 44
権限があれば一括ダウンロードができます

ソースコード

diff #

N = int(input())
points = [tuple(map(int,input().split())) for _ in range(N)]
points.sort()

from functools import cmp_to_key

def ccw(a,b,c):
  ax,ay = a
  bx,by = b
  cx,cy = c
  bx -= ax
  cx -= ax
  by -= ay
  cy -= ay
  crs = bx*cy-cx*by
  if crs > 0:return 1
  if crs < 0: return -1
  return 0

upper = []
for p in points:
  while len(upper) >= 2 and ccw(upper[-2], upper[-1], p) >= 0:
    upper.pop()
  upper.append(p)

lower = []
for p in points[::-1]:
  while len(lower) >= 2 and ccw(lower[-2], lower[-1], p) >= 0:
    lower.pop()
  lower.append(p)

upper.pop()
lower.pop()

if  len(upper) + len(lower) == N:
  print("Yes")
else:
  print("No")
  
0