提出 #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)

提出情報

提出日時
問題 E - Simple String Queries
ユーザ maspy
言語 Python (3.8.2)
得点 500
コード長 1852 Byte
結果 AC
実行時間 187 ms
メモリ 45040 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 500 / 500
結果
AC × 1
AC × 43
セット名 テストケース
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