提出 #14610743
ソースコード 拡げる
import sys
import numpy as np
read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines
seg_unit = 0
def seg_f(x, y):
return x | y
def build(seg, raw_data):
N = len(seg) // 2
seg[N:] = raw_data
for i in range(N - 1, 0, -1):
seg[i] = seg_f(seg[i << 1], seg[i << 1 | 1])
def set_val(seg, i, x):
N = len(seg) // 2
i += N
seg[i] = x
while i > 1:
i >>= 1
seg[i] = seg_f(seg[i << 1], seg[i << 1 | 1])
def fold(seg, l, r):
vl = vr = 0
N = len(seg) // 2
l, r = l + N, r + N
while l < r:
if l & 1:
vl = seg_f(vl, seg[l])
l += 1
if r & 1:
r -= 1
vr = seg_f(seg[r], vr)
l, r = l >> 1, r >> 1
return seg_f(vl, vr)
def main(N, S, query):
seg = np.zeros(N + N, np.int64)
build(seg, 1 << S)
for q in query:
t, a, b = q.split()
if t == b'1':
a, b = int(a) - 1, ord(b) - ord('a')
set_val(seg, a, 1 << b)
else:
a, b = int(a) - 1, int(b)
x = fold(seg, a, b)
print(bin(x).count('1'))
if sys.argv[-1] == 'ONLINE_JUDGE':
import numba
from numba.pycc import CC
i8 = numba.int64
cc = CC('my_module')
def cc_export(f, signature):
cc.export(f.__name__, signature)(f)
return numba.njit(f)
seg_f = cc_export(seg_f, (i8, i8))
build = cc_export(build, (i8[:], i8[:]))
set_val = cc_export(set_val, (i8[:], i8, i8))
fold = cc_export(fold, (i8[:], i8, i8))
cc.compile()
from my_module import seg_f, build, set_val, fold
N = int(readline())
S = np.array(list(readline().rstrip()), np.int64) - ord('a')
query = readlines()[1:]
main(N, S, query)
提出情報
ジャッジ結果
| セット名 |
Sample |
All |
| 得点 / 配点 |
0 / 0 |
500 / 500 |
| 結果 |
|
|
| セット名 |
テストケース |
| Sample |
00-sample-00 |
| All |
00-sample-00, 01-handmade-00, 01-handmade-01, 01-handmade-02, 01-handmade-03, 01-handmade-04, 01-handmade-05, 01-handmade-06, 01-handmade-07, 01-handmade-08, 01-handmade-09, 01-handmade-10, 01-handmade-11, 02-small-00, 02-small-01, 02-small-02, 02-small-03, 02-small-04, 02-small-05, 02-small-06, 02-small-07, 02-small-08, 02-small-09, 02-small-10, 02-small-11, 02-small-12, 02-small-13, 02-small-14, 02-small-15, 02-small-16, 02-small-17, 02-small-18, 02-small-19, 03-large-00, 03-large-01, 03-large-02, 03-large-03, 03-large-04, 03-large-05, 03-large-06, 03-large-07, 03-large-08, 03-large-09 |
| ケース名 |
結果 |
実行時間 |
メモリ |
| 00-sample-00 |
AC |
115 ms |
27044 KiB |
| 01-handmade-00 |
AC |
180 ms |
44784 KiB |
| 01-handmade-01 |
AC |
114 ms |
27456 KiB |
| 01-handmade-02 |
AC |
167 ms |
44512 KiB |
| 01-handmade-03 |
AC |
187 ms |
45040 KiB |
| 01-handmade-04 |
AC |
180 ms |
44468 KiB |
| 01-handmade-05 |
AC |
178 ms |
44436 KiB |
| 01-handmade-06 |
AC |
176 ms |
44716 KiB |
| 01-handmade-07 |
AC |
179 ms |
44672 KiB |
| 01-handmade-08 |
AC |
179 ms |
44492 KiB |
| 01-handmade-09 |
AC |
172 ms |
44532 KiB |
| 01-handmade-10 |
AC |
185 ms |
44380 KiB |
| 01-handmade-11 |
AC |
183 ms |
44508 KiB |
| 02-small-00 |
AC |
129 ms |
27736 KiB |
| 02-small-01 |
AC |
130 ms |
27928 KiB |
| 02-small-02 |
AC |
126 ms |
27540 KiB |
| 02-small-03 |
AC |
126 ms |
28116 KiB |
| 02-small-04 |
AC |
123 ms |
27648 KiB |
| 02-small-05 |
AC |
127 ms |
27556 KiB |
| 02-small-06 |
AC |
133 ms |
28344 KiB |
| 02-small-07 |
AC |
128 ms |
28092 KiB |
| 02-small-08 |
AC |
126 ms |
27896 KiB |
| 02-small-09 |
AC |
117 ms |
27880 KiB |
| 02-small-10 |
AC |
130 ms |
28340 KiB |
| 02-small-11 |
AC |
127 ms |
27792 KiB |
| 02-small-12 |
AC |
128 ms |
27832 KiB |
| 02-small-13 |
AC |
133 ms |
28504 KiB |
| 02-small-14 |
AC |
128 ms |
28148 KiB |
| 02-small-15 |
AC |
130 ms |
27900 KiB |
| 02-small-16 |
AC |
131 ms |
27996 KiB |
| 02-small-17 |
AC |
123 ms |
28004 KiB |
| 02-small-18 |
AC |
130 ms |
27944 KiB |
| 02-small-19 |
AC |
133 ms |
28200 KiB |
| 03-large-00 |
AC |
172 ms |
44448 KiB |
| 03-large-01 |
AC |
176 ms |
44744 KiB |
| 03-large-02 |
AC |
174 ms |
44704 KiB |
| 03-large-03 |
AC |
183 ms |
44412 KiB |
| 03-large-04 |
AC |
171 ms |
44720 KiB |
| 03-large-05 |
AC |
174 ms |
44728 KiB |
| 03-large-06 |
AC |
177 ms |
44444 KiB |
| 03-large-07 |
AC |
179 ms |
44764 KiB |
| 03-large-08 |
AC |
180 ms |
44700 KiB |
| 03-large-09 |
AC |
180 ms |
44808 KiB |