시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
5 초 (추가 시간 없음) | 1024 MB | 502 | 69 | 46 | 15.333% |
양의 정수 N으로 만들어지는 문자열 SN은 다음과 같이 정의된다. 아래에서 ⌊N/2⌋은 N을 2로 나눈 몫이다.
위의 약속에 따라 S13을 구해보면 다음과 같다.
양의 정수 N이 주어질 때, 아래와 같은 형태의 질의 Q개를 해결하는 프로그램을 작성하라.
q (1 ≤ q ≤ Q)번째 질의는 세 개의 정수 (iq, jq, kq)가 주어질 때 다음과 같다: SN[iq..jq]에서 0을 최대 kq개까지 포함하는 가장 긴 부분문자열의 길이는?
위의 예에서 질의가 (1, 15, 0)이라면 가장 긴 부분문자열은 1로만 이루어져야 한다. 또, 질의가 S13 전체에서 찾기를 요구하고 있으므로 해당 문자열의 길이는 7이다.
만약, (2, 14, 2)이라면 질의는 S13의 두번째부터 14번째 문자까지에서 0이 최대 2개인 가장 긴 부분문자열을 찾으라고 요구한다. 그런데 S13[2..14] = 1101111111011에는 0이 2개 뿐이므로 그 전체가 답이 되고, 그 길이는 13이다.
첫 번째 줄에 N과 질의의 개수 Q가 정수로 주어진다.
다음 Q개의 줄에 질의들이 한 줄에 하나씩 주어진다. 이 중 q (1 ≤ q ≤ Q)번째 줄에는 세 개의 정수 iq, jq, kq가 공백 하나씩을 사이로 두고 주어진다.
각 질의에 대한 답을 질의가 주어진 순서대로 각각 한줄에 하나씩 출력한다.
번호 | 배점 | 제한 |
---|---|---|
1 | 5 | N = 2t가 성립하는 음이 아닌 정수 t가 존재한다. 즉, N은 1, 2, 4, 8, ..과 같이 2의 거듭제곱 중 하나이다. |
2 | 11 | N ≤ 1 000. |
3 | 17 | ∑(jq − iq + 1) ≤ 100 000. 즉, 모든 질의에서 j − i + 1의 값을 더하면 최대 100 000이다. |
4 | 25 | 모든 q (1 ≤ q ≤ Q)에 대해, kq = 0 |
5 | 42 | 추가 제약 조건 없음. |
13 3 1 15 0 2 14 2 2 8 0
7 13 4
부분문자열의 정의 길이가 l인 문자열 s와 1 ≤ i ≤ j ≤ l인 두 정수 i와 j에 대해, s[i..j]는 s의 i번째 문자에서부터 j번째 문자까지를 모두 순서대로 포함하는 문자열이며, 이러한 문자열들을 문자열 s의 부분문자열이라고 한다.
예를 들어 s가 0100101
이라면, s[3..5]는 001
이고, s[4..7]은 0101
이다. 따라서 001
과 0101
은 문자열 0100101
의 부분문자열이다. 하지만 1010
은 문자열 0100101
의 부분문자열이 아니다.
Olympiad > 한국정보올림피아드 > KOI 2021 2차대회 > 중등부 3번