提出 #10530007
ソースコード 拡げる
from collections import defaultdict
import bisect
alphabet="abcdefghijklmnopqrstuvwxyz"
bS = int(input())
S= input()
nQ = int(input())
S = [i for i in S]
query = []
for i in range(nQ):
query.append(input().split())
locs =defaultdict(list)
for i,char in enumerate(S):
locs[char].append(i)
def countChars(iter,ss,ee):
nChar = 0
for i in alphabet:
if len(locs[i]) == 0:
pass
else:
sptr = bisect.bisect_right(locs[i],ss)
eptr = bisect.bisect_left(locs[i],ee)
if sptr == eptr:
if sptr < 1 or sptr > len(locs[i]):
continue
else:
if locs[i][sptr-1] == ss:
nChar+=1
else:
nChar += 1
return nChar
res = []
for iter,iQ in enumerate(query):
if int(iQ[0]) == 2:
res.append(str( countChars(iter,int(iQ[1])-1,int(iQ[2])) ))
if int(iQ[0]) == 1:
location = int(iQ[1])-1
curChar = S[location]
if curChar != iQ[2]:
locs[curChar].remove(location) #remove from old
bisect.insort(locs[iQ[2]],location)
S[location] = iQ[2]
print(" ".join(res))
提出情報
| 提出日時 | |
|---|---|
| 問題 | E - Simple String Queries |
| ユーザ | nk77 |
| 言語 | PyPy3 (2.4.0) |
| 得点 | 500 |
| コード長 | 1149 Byte |
| 結果 | AC |
| 実行時間 | 1863 ms |
| メモリ | 98532 KiB |
ジャッジ結果
| セット名 | 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 | 163 ms | 38256 KiB |
| 01-handmade-00 | AC | 433 ms | 95588 KiB |
| 01-handmade-01 | AC | 164 ms | 38256 KiB |
| 01-handmade-02 | AC | 781 ms | 86116 KiB |
| 01-handmade-03 | AC | 1001 ms | 96356 KiB |
| 01-handmade-04 | AC | 722 ms | 88292 KiB |
| 01-handmade-05 | AC | 1863 ms | 97508 KiB |
| 01-handmade-06 | AC | 921 ms | 92644 KiB |
| 01-handmade-07 | AC | 950 ms | 94180 KiB |
| 01-handmade-08 | AC | 690 ms | 95076 KiB |
| 01-handmade-09 | AC | 727 ms | 90212 KiB |
| 01-handmade-10 | AC | 671 ms | 95460 KiB |
| 01-handmade-11 | AC | 738 ms | 98532 KiB |
| 02-small-00 | AC | 484 ms | 59352 KiB |
| 02-small-01 | AC | 526 ms | 61144 KiB |
| 02-small-02 | AC | 502 ms | 60248 KiB |
| 02-small-03 | AC | 557 ms | 62680 KiB |
| 02-small-04 | AC | 485 ms | 59480 KiB |
| 02-small-05 | AC | 485 ms | 60120 KiB |
| 02-small-06 | AC | 548 ms | 62296 KiB |
| 02-small-07 | AC | 481 ms | 59520 KiB |
| 02-small-08 | AC | 466 ms | 59352 KiB |
| 02-small-09 | AC | 505 ms | 61016 KiB |
| 02-small-10 | AC | 535 ms | 62680 KiB |
| 02-small-11 | AC | 485 ms | 59736 KiB |
| 02-small-12 | AC | 492 ms | 58968 KiB |
| 02-small-13 | AC | 479 ms | 60760 KiB |
| 02-small-14 | AC | 480 ms | 61144 KiB |
| 02-small-15 | AC | 505 ms | 60504 KiB |
| 02-small-16 | AC | 517 ms | 62168 KiB |
| 02-small-17 | AC | 474 ms | 58968 KiB |
| 02-small-18 | AC | 511 ms | 60248 KiB |
| 02-small-19 | AC | 478 ms | 60376 KiB |
| 03-large-00 | AC | 996 ms | 96484 KiB |
| 03-large-01 | AC | 1002 ms | 96996 KiB |
| 03-large-02 | AC | 998 ms | 96484 KiB |
| 03-large-03 | AC | 984 ms | 95716 KiB |
| 03-large-04 | AC | 1000 ms | 96228 KiB |
| 03-large-05 | AC | 993 ms | 95972 KiB |
| 03-large-06 | AC | 988 ms | 96484 KiB |
| 03-large-07 | AC | 998 ms | 96356 KiB |
| 03-large-08 | AC | 990 ms | 96484 KiB |
| 03-large-09 | AC | 986 ms | 96484 KiB |