시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
2 초 | 512 MB | 185 | 5 | 5 | 20.833% |
0과 1로만 이루어진 길이 n의 이진 문자열 S가 주어져 있다.
S의 인덱스는 1부터 시작하며, S[a : b]는 인덱스 a 이상 b 이하까지의 S의 부분 문자열로 정의하자.
이 때, 이 문자열에, 기존 문자열의 부분 문자열을 반전시켜 삽입하는 연산을 m번 적용한다.
조건들은 다음과 같다.
이 문제의 목적은, 연산 m번을 모두 적용한 후 마지막 결과 S에 대해, S의 최초 k개의 문자를 맞추는 것이다.
예를 들어 S = 01010110 이고 n = 8, m = 2, k = 12 그리고 두 연산 (x= 2, y = 4)와 (x = 3, y = 5) 를 순서대로 적용한다면 아래와 같은 순서로 S가 변경된다.
입력으로 n, m, k, 시작 문자열 S, 그리고 m번의 연산에 사용되는 x, y 값들을 입력 받아 모든 연산을 적용한 후 얻어지는 S의 처음 k개의 글자를 출력하시오.
첫 줄에 테스트 케이스의 수 T가 주어진다 (1 ≤ T ≤ 10).
각 테스트 케이스의 첫 줄에는 n, m, k가 공백으로 구분되어 주어진다.
두 번째 줄에는 길이가 n인 문자열이 주어지며 각 문자는 0 혹은 1이다.
다음 m줄에 걸쳐 한 줄에 두 개의 정수 x[i], y[i]가 주어진다. 입력으로 주어지는 x[i], y[i]는 언제나 다음 조건을 만족한다: 1 ≤ x[i] ≤ y[i] ≤ i번째 연산을 적용하기 직전의 문자열 S의 길이.
마찬가지로, k는 m번의 연산을 모두 적용한 후 마지막에 얻은 문자열 S의 길이와 106 중 작은 값을 넘지 않는다.
각 테스트 케이스에 대해 한 줄에 길이가 k인 문자열을 출력한다.
3 8 2 12 01010110 2 4 3 5 4 1 4 1010 1 1 8 2 16 10101100 1 2 2 8
010101011001 1001 1001101111001000