Pythonのsetは1エントリーあたり90バイトも食っている。
10Mエントリー前後でatcoderの1024MBのメモリ制限に引っかかる。
定義域が[0, N)
ならnp.zeros(N, np.bool_)
がよい。座標圧縮でその形に持ち込むのも良さそう。
mprof python
x = set()
for i in range(9_000_000):
x.add(i)
python
import numpy as np
x = np.zeros(9_000_000, np.bool_)
for i in range(9_000_000):
x[i] = 1