提出 #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
結果
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 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