結果

問題 No.1997 X Lighting
ユーザー tamatotamato
提出日時 2022-07-01 22:11:31
言語 PyPy3
(7.3.15)
結果
AC  
実行時間 209 ms / 2,000 ms
コード長 1,160 bytes
コンパイル時間 283 ms
コンパイル使用メモリ 82,240 KB
実行使用メモリ 99,448 KB
最終ジャッジ日時 2024-11-26 05:21:46
合計ジャッジ時間 5,149 ms
ジャッジサーバーID
(参考情報)
judge5 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 30
権限があれば一括ダウンロードができます

ソースコード

diff #

mod = 998244353


def main():
    import sys
    from bisect import bisect_left
    input = sys.stdin.readline

    N, M = map(int, input().split())
    U0 = set()
    U1 = set()
    V0 = set()
    V1 = set()
    ans = 0
    for _ in range(M):
        x, y = map(int, input().split())
        u = x + y
        v = x - y
        if u & 1:
            U1.add(u)
        else:
            U0.add(u)
        if v & 1:
            V1.add(v)
        else:
            V0.add(v)
    U0 = sorted(list(U0))
    U1 = sorted(list(U1))
    V0 = sorted(list(V0))
    V1 = sorted(list(V1))

    #print(U0, V0)
    for u in U0:
        mi = max(2 - u, -2 * N + u)
        ma = min(2 * N - u, -2 + u)
        ans -= bisect_left(V0, ma + 1) - bisect_left(V0, mi)
    #print(U1, V1)
    for u in U1:
        mi = max(2 - u, -2 * N + u)
        ma = min(2 * N - u, -2 + u)
        ans -= bisect_left(V1, ma + 1) - bisect_left(V1, mi)

    for u in U0:
        ans += N - abs(N + 1 - u)
    for u in U1:
        ans += N - abs(N + 1 - u)
    for v in V0:
        ans += N - abs(v)
    for v in V1:
        ans += N - abs(v)
    print(ans)


if __name__ == '__main__':
    main()
0