結果
| 問題 |
No.2355 Unhappy Back Dance
|
| コンテスト | |
| ユーザー |
amentorimaru
|
| 提出日時 | 2023-06-16 22:42:53 |
| 言語 | PyPy3 (7.3.15) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,349 bytes |
| コンパイル時間 | 327 ms |
| コンパイル使用メモリ | 82,544 KB |
| 実行使用メモリ | 495,604 KB |
| 最終ジャッジ日時 | 2024-06-24 15:35:34 |
| 合計ジャッジ時間 | 18,662 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 1 WA * 2 |
| other | AC * 20 WA * 13 TLE * 4 |
ソースコード
import sys
import math
input = sys.stdin.readline
def read_values(): return map(int, input().split())
def read_index(): return map(lambda x: int(x) - 1, input().split())
def read_list(): return list(read_values())
def read_lists(N): return [read_list() for _ in range(N)]
def main():
n=int(input())
x=[0]*n
y=[0]*n
for i in range(n):
x[i],y[i]=read_values()
mp=dict()
for i in range(n):
for j in range(n):
if i==j:continue
dx=y[i]-y[j]
dy=-x[i]+x[j]
dc=-(dx*x[i]+dy*y[i])
g=math.gcd(dx,dy,dc)
if dx<0 or (dx==0 and dy<0):
g*=-1
if g==0:
continue
dx/=g
dy/=g
dc/=g
ad=dx+dy*(10**18)+dc*(10**36)*2
if not ad in mp:
mp[ad]=set()
mp[ad].add(i)
uh=[0]*n
for vc in mp.values():
if len(vc) < 3:
continue
if len(vc) > 3:
for v in vc:
uh[v]|=1
continue
vl=list(vc)
for i in range(3):
inner = (x[vl[(i+2)%3]]-x[vl[i]])*(x[vl[(i+1)%3]]-x[vl[i]])+(y[vl[(i+2)%3]]-y[vl[i]])*(y[vl[(i+1)%3]]-y[vl[i]])
if inner > 0:
uh[vl[i]]|=1
print(sum(uh))
if __name__ == "__main__":
main()
amentorimaru