구슬 정리
시간 제한2초메모리 제한1024 MB
셀을 하나씩 토글한 뒤, 구슬을 왼쪽 끝이나 오른쪽 끝에 연속으로 모으는 데 필요한 최소 밀기 횟수를 매번 구한다.
문제
현욱이는 개()의 칸으로 이루어진 긴 통을 하나 가지고 있다. 각 칸은 비어 있거나 구슬을 하나 담고 있다. 구슬을 보관할 때 여기저기 흩어져 있으면 보기 좋지 않으므로, 현욱이는 모든 구슬을 한쪽 끝으로 모으려고 한다. 구체적으로, 통에 구슬이 개 있다면 구슬은 번부터 번 칸에 있거나 번부터 번 칸에 있어야 한다.
현욱이는 통의 번째 칸에 있는 구슬을 살짝 밀어 번째 칸이나 번째 칸으로 옮길 수 있다. 옮기려는 방향의 칸에 구슬이 있으면 그 구슬도 같은 방향으로 밀린다. 예를 들어, 2번, 3번, 5번 칸에 구슬이 있다고 하자. 현욱이가 2번 칸의 구슬을 3번 칸 쪽으로 밀면 3번 칸의 구슬도 4번 칸으로 밀린다. 5번 칸의 구슬은 그대로 남는다.
현욱이는 통에 구슬을 넣거나 빼면서 구슬을 모두 정리하는 데 필요한 최소 이동 횟수가 어떻게 변하는지 궁금해한다. 현욱이가 통에 구슬을 넣거나 뺄 때마다 구슬 통을 정리하는 데 필요한 최소 이동 횟수를 계산하는 프로그램을 작성하시오.
입력
첫째 줄에 구슬 통의 길이 이 주어진다.
둘째 줄에 구슬 통의 상태를 나타내는 O와 X로만 이루어진 길이 의 문자열이 주어진다. 문자열의 번째 문자가 O이면 그 칸에 구슬이 있다. 그렇지 않으면 번째 문자는 X이고 그 칸은 비어 있다.
셋째 줄에 현욱이가 수행하는 행동의 수 가 주어진다.
다음 개의 줄에 각각 현욱이의 행동을 나타내는 정수 가 하나씩 주어진다. 이는 구슬 통의 번째 칸에 구슬이 있으면 그 구슬을 빼고, 구슬이 없으면 그 칸에 구슬을 넣는다는 뜻이다.
입력은 구슬 통에 구슬이 하나도 없는 상태가 생기지 않도록 주어진다.
출력
현욱이가 처음 개의 행동을 수행한 뒤 구슬을 모두 정리하는 데 필요한 최소 이동 횟수를 번째 줄에 하나씩, 모두 개의 줄에 걸쳐 출력한다.