結果

問題 No.202 1円玉投げ
ユーザー nuwasogi
提出日時 2015-11-08 03:09:56
言語 Python3
(3.13.1 + numpy 2.2.1 + scipy 1.14.1)
結果
MLE  
(最新)
AC  
(最初)
実行時間 -
コード長 1,090 bytes
コンパイル時間 240 ms
コンパイル使用メモリ 12,544 KB
実行使用メモリ 604,032 KB
最終ジャッジ日時 2024-12-11 07:27:01
合計ジャッジ時間 139,441 ms
ジャッジサーバーID
(参考情報)
judge3 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 37 MLE * 1
権限があれば一括ダウンロードができます

ソースコード

diff #

class Ichiendama:
    Radius = 10
    def __init__(self, x, y):
        self.X = int(x)
        self.Y = int(y)

# 2定距離を返す        
def distance2(a, b):
    return ((a.X - b.X)**2 + (a.Y - b.Y)**2)

# 一円玉a, b が重なっていればtrueを返す
def CheckOverlap(a, b):
    if distance2(a,b) < (Ichiendama.Radius*2)**2:
        return True
    else:
        return False

if __name__ == "__main__":

    N = int(input())
    M = 2001
    ans = 0
    Valids = [[ [] for i in range(M)] for j in range(M)]

    for newcoin in range(N):
        (x, y) = input().split()
        (x, y) = (int(x), int(y))
        newcoin = Ichiendama(x, y)
        isOverlap = False
        nx = x//10
        ny = y//10
        neighbor = []
        for i in range(nx-2,nx+3):
            for j in range(ny-2, ny+3):
                neighbor += Valids[i%M][j%M]
        for v in neighbor:
            if CheckOverlap(v, newcoin):
                isOverlap = True
                break
        if isOverlap == False:
            Valids[nx][ny].append(newcoin)
            ans+=1
    print(ans)
0