D - LOWER Editorial by kyopro_friends


\(t\neq1\) のクエリのうち、意味のあるものは最後のクエリに限ります。
そこで、クエリを先読みして \(t\neq 1\) の最後のクエリのindexを求めておき、それ以外の \(t\neq 1\) のクエリは無視しながらそのままシミュレーションすると \(O(N+Q)\) で解けます。

input()
S=list(input())
Q=int(input())
query=[input().split() for _ in range(Q)]
last=-1
for i,(t,_,_) in enumerate(query):
  if t=='2' or t=='3': last=i

for i,(t,x,c) in enumerate(query):
  if t=='1':
    S[int(x)-1]=c
  elif t=='2':
    if i==last:
      S=list("".join(S).lower())
  else:
    if i==last:
      S=list("".join(S).upper())

print("".join(S))

posted:
last update: