가희와 신칸센 2
면접 대비시간 제한1.9초메모리 제한1024 MB
지상, 터널, 역으로 이루어진 문자열에서 구간의 지상을 터널로 바꾸며 이웃과 합쳐지고, 터널 개수와 가장 긴 터널, 가장 짧은 터널을 출력하는 문제입니다.
문제
도쿄에서 니가타를 잇는 조에츠 신칸센은 긴 터널이 많습니다. 간토평야를 지난 후 험준한 산악 지대를 통과하기 때문입니다. 이 노선은 터널, 지상 구간, 역으로 구분할 수 있습니다. 터널의 시점과 종점의 정의는 다음과 같습니다.
- 터널 가 에서 시작하여 에서 끝난다면, 즉 구간 가 터널 의 구간이라면, 터널 의 시점과 종점은 각각 , 가 됩니다.
호기심이 많은 가희는 조에츠 신칸센 노선이 변할 때마다 해당 노선에서 가장 긴 터널과 가장 짧은 터널, 그리고 터널의 개수가 궁금해졌습니다. 가희를 도와주세요. 가장 긴 터널과 가장 짧은 터널의 정의는 다음과 같습니다.
- 가장 긴 터널은 노선 내에서 길이가 제일 긴 터널입니다. 그러한 터널이 여러 개라면, 그중 시점이 가장 작은 터널입니다.
- 가장 짧은 터널은 노선 내에서 길이가 제일 짧은 터널입니다. 그러한 터널이 여러 개라면, 그중 시점이 가장 작은 터널입니다.
입력
첫 번째 줄에 노선의 길이 이 주어집니다.
두 번째 줄에 길이가 인 문자열이 주어집니다. 번째에 있는 문자는 다음을 의미합니다.
- 구간 에 대해 문자가
0이면 지상 구간,1이면 터널,2이면 역입니다.
세 번째 줄에 쿼리의 개수 가 주어집니다.
네 번쨰 줄부터 개의 줄에 걸쳐 다음 두 개의 쿼리 중 하나가 한 줄에 하나씩 주어집니다.
- : 구간 에 속한 모든 지상 구간에 터널을 즉시 건설합니다. 또한 새로 생긴 터널이 기존 터널과 연결되는 경우, 새로 생긴 터널은 기존 터널과 합쳐집니다.
- : 문제에 대한 답을 출력합니다.
출력
번 쿼리가 나올 때마다 다음과 같이 출력해 주세요.
터널이 노선 내에 없는 경우 -1만 출력해 주세요. 그렇지 않은 경우 다음 형식으로 출력해 주세요. 개의 값은 공백으로 구분해서 출력해 주세요.
{tunnel_num} {longest_tunnel_s} {longest_tunnel_e} {shortest_tunnel_s} {shortest_tunnel_e}
각 요소에 대한 설명은 다음과 같습니다.
tunnel_num: 조에츠 신칸센 노선에 있는 터널 개수입니다.longest_tunnel_s: 조에츠 신칸센 노선에 있는 터널 중 가장 긴 터널의 시점longest_tunnel_e: 조에츠 신칸센 노선에 있는 터널 중 가장 긴 터널의 종점shortest_tunnel_s: 조에츠 신칸센 노선에 있는 터널 중 가장 짧은 터널의 시점shortest_tunnel_e: 조에츠 신칸센 노선이 있는 터널 중 가장 짧은 터널의 종점
제한
- 노선의 양 끝은 역입니다.
- 번 쿼리는 최소 한 번 이상 등장합니다.
힌트
조에츠 신칸센이 왜 이 타이밍에 뜬금없이 등장했을까?