만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

랭크 승급

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

요약
정답 여부 Y, N으로 주어진 퀴즈 기록에서 현재 등급 이후 길이 c 이상의 구간 정답 비율이 p/q 이상이면 등급이 오르는 규칙으로 최종 등급을 구합니다.
난이도

어려움10점 중 8점

유형
누적 합, 동적 계획법, 구현
정답자
아직 제출이 없습니다

문제

Quiz Solver는 인기 있는 온라인 컴퓨터 게임이다. 플레이어가 모바일 앱을 열 때마다 새로운 퀴즈가 표시된다. 플레이어가 퀴즈에 답을 제출하면 정답 또는 오답으로 판정되고, 그 결과가 데이터베이스에 누적된다. 플레이어가 여러 퀴즈에서 높은 정확도를 보이면 게임 내 랭크가 오른다.

플레이어의 랭크는 0 이상의 정수이며, 모든 플레이어는 랭크 00에서 시작한다. 랭크 승급은 정수 cc와 유리수 p/qp/q로 정의된다. ee번째 퀴즈를 마친 후, 다음 조건을 만족하는 정수 ss가 존재하면 랭크가 1 증가한다.

  • 1≤s≤e−c+11 \le s \le e - c + 1.
  • ss번째 퀴즈를 시작하기 전에 플레이어가 이미 현재 랭크에 있었다.
  • ss번째부터 ee번째까지 퀴즈의 정답률이 p/qp/q 이상이다.

조건을 만족하는 ss가 없으면 랭크는 그대로 유지된다.

어느 날 Quiz Solver 관리자는 데이터베이스 장애로 플레이어들의 랭크 데이터가 유실된 것을 알게 되었다. 다행히 퀴즈 풀이 기록은 온전히 남아 있다. 각 플레이어의 풀이 기록으로부터 그 플레이어의 랭크를 다시 계산하라.

입력

입력은 다음 형식의 테스트케이스 하나로 구성된다.

nn cc pp qq

S1S_1 ⋯\cdots SnS_n

첫 줄에는 네 정수가 주어지며, 1≤n≤5×1051 \le n \le 5 \times 10^5, 1≤c≤2001 \le c \le 200, 1≤p≤q≤5×1051 \le p \le q \le 5 \times 10^5을 만족한다. nn은 한 플레이어가 푼 퀴즈의 수이고, cc, pp, qq의 의미는 문제에 설명한 바와 같다. 각 SiS_i는 ii번째 퀴즈의 답이 맞았으면 Y, 틀렸으면 N이다.

출력

nn번째 퀴즈를 마친 후 플레이어의 최종 랭크를 한 줄에 출력한다.

힌트

샘플 입력 1에서 플레이어는 4번째 퀴즈를 마친 뒤 랭크 1로 승급한다. 정답률 3/4가 p/q=4/7p/q = 4/7보다 높기 때문이다. 3번째 퀴즈 뒤에는 푼 퀴즈가 3개뿐이어서 c=4c = 4보다 적으므로 승급하지 않는다. 11번째 퀴즈를 마친 뒤 랭크 2로 승급한다.

그림 B.1. 샘플 입력 1의 랭크 승급 시점

예제4

  1. 예제 1

    입력
    12 4 4 7
    YYYNYYNNNYYN
    
    예상 출력
    2
    
  2. 예제 2

    입력
    10 1 1 1
    YNYNYNYNYN
    
    예상 출력
    5
    
  3. 예제 3

    입력
    17 5 250000 500000
    YYYYYYYYYYYYYYYYY
    
    예상 출력
    3
    
  4. 예제 4

    입력
    8 3 2 3
    YNNYYYYN
    
    예상 출력
    2