Si vous l'essayez à la main, vous pouvez voir que les Kth à Nth sont disposés dans l'ordre, puis les 1er à K-1th sont disposés dans l'ordre, et vice versa. Le 1er à K-1th arrangement Bien sûr, cela dépend si le nombre d'opérations est pair ou impair, donc il peut être résolu avec le code suivant.
N, K = map(int, input().split())
S = input()
if (N - K) % 2 == 0:
print(S[K-1:] + S[:K-1][::-1])
else:
print(S[K-1:] + S[:K-1])
J'ai pensé à réécrire le tableau en déplaçant le pointeur et en sortant le résultat en fonction des informations du pointeur, mais c'était compliqué et je me suis confondu dans ma tête, alors j'ai décidé d'exécuter l'opération directement avec deque. Il n'y avait rien de difficile dans ce cas, et j'ai pu le résoudre avec le code suivant.
from collections import deque
N, M = map(int, input().split())
a = list(map(int, input().split()))
S = input()
q = deque(a)
for c in S:
if c == 'L':
t = q.popleft()
q[0] += t
q.append(0)
elif c == 'R':
t = q.pop()
q[-1] += t
q.appendleft(0)
print(*q)
Postscript: J'ai aussi essayé de le résoudre en déplaçant le pointeur, c'était compliqué.
N, M = map(int, input().split())
a = list(map(int, input().split()))
S = input()
p = 0
for c in S:
if c == 'L':
p = max(p - 1, -N + 1)
if p < 0:
a[-p] += a[-p - 1]
a[-p - 1] = 0
elif c == 'R':
p = min(p + 1, N - 1)
if p > 0:
a[N - 1 - p] += a[N - p]
a[N - p] = 0
if p > 0:
print(*([0] * p + a)[:N])
elif p < 0:
print(*(a + [0] * -p)[-p:N - p])
else:
print(*a)
Recommended Posts