snupc 문자열 (Easy)

시간 제한2초메모리 제한1024 MB

요약
각 부분 문자열 쿼리마다 s, n, u, p, c를 각각 k개씩 순서대로 이은 f(k)가 부분 수열이 되는 최대 k를 구한다.
난이도

쉬움10점 중 3점

유형
이분 탐색, 누적 합, 배열
정답자
아직 제출이 없습니다

문제

알파벳 s,n,u,p,c로만 이루어진 문자열 SS가 주어진다.

f(1)=f(1)= snupc, f(2)=f(2)= ssnnuuppcc와 같이 f(k)f(k)를 s,n,u,p,c 각 kk개가 순서대로 연속하여 이어진 문자열로 정의하자. f(0)f(0)은 빈 문자열을 의미한다.

QQ개의 쿼리가 주어질 때, 다음을 처리하는 프로그램을 작성하라.

  • ll rr: SS의 ll번째 문자부터 rr번째 문자까지를 이은 새로운 문자열에 대해, f(k)f(k)가 부분 수열(Subsequence)로 등장하도록 하는 kk의 최댓값을 출력한다.

문자열의 부분 수열이란, 원래 문자열에서 00개 이상의 문자를 제거하여 얻을 수 있는 문자열을 말한다. 단, 남은 문자의 순서는 바꿀 수 없으며, 연속할 필요는 없다. 예를 들어 abcde의 부분 수열은 ace,bd,a,abcde, 빈 문자열 등이 해당한다.

입력

첫째 줄에 문자열 SS가 주어진다. (1≤∣S∣≤100,000)(1 \le |S| \le 100\\,000)

둘째 줄에 쿼리의 개수 QQ가 주어진다. (1≤Q≤5,000)(1 \le Q \le 5\\,000)

셋째 줄부터 QQ개의 줄에 걸쳐, 쿼리에 대한 정보 ll, rr이 공백으로 구분되어 주어진다. (1≤l≤r≤∣S∣)(1 \le l \le r \le |S|)

입력으로 주어지는 모든 수는 정수이다.

출력

각 쿼리에 대한 결과를 한 줄에 하나씩 출력한다.

예제1

  1. 예제 1

    입력
    snupcsnnuuppcc
    4
    1 5
    2 5
    1 14
    2 14
    
    예상 출력
    1
    0
    2
    1