최종 순위

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

요약
각 팀의 실력과 문제의 난이도, 동결된 스코어보드가 주어질 때, 동점은 항상 t번 팀의 승리로 가정하고 t번 팀이 최종 1위를 차지할 확률을 구한다.
난이도

보통10점 중 7점

유형
확률, 동적 계획법, 수학
정답자
아직 제출이 없습니다

문제

GCPC 2019가 드디어 끝났다. 다섯 시간 동안 최대한 많은 문제를 풀었다. 하지만 스코어보드가 아직 고정되어 있어서 자신이 몇 등인지 알 수 없다. 물론 자신과 자신의 팀이 GCPC 2019에서 우승했다고 생각한다.

대회가 끝나고 스코어보드가 풀릴 때까지는 항상 긴 공백이 있다(누군가는 상장을 인쇄해야 하고, 누군가는 풀이 슬라이드를 다시 컴파일해야 한다). 이 시간을 이용해 자신의 팀이 GCPC 2019에서 우승했을 확률을 구하려고 한다.

최종 스코어보드를 알고 있다. 즉, 모든 팀에 대해 고정 전에 어떤 문제를 풀었고 고정 중에 어떤 문제를 시도했는지 안다. 또한 작년의 기록에서 각 팀의 실력을 알고 있고, 각 문제의 난이도에 대한 자신의 추정을 신뢰한다. 정확히 말해, 실력 s∈[0,1]s \in [0, 1]인 팀이 난이도 d∈[0,1]d \in [0, 1]인 문제를 풀려고 시도했다면, 그 문제를 풀 확률은 s⋅ds \cdot d라고 가정한다.

자신의 팀이 올해 쉬운 문제를 매우 빠르게 풀었으므로, 다른 팀이 자신보다 높은 순위를 차지하려면 더 많은 문제를 풀어야 한다고 가정한다(동점일 때는 항상 자신이 이긴다고 가정한다).

입력

  • 첫 번째 줄에는 두 정수 tt와 pp가 주어진다(1≤t,p≤1001 \le t, p \le 100). 이는 대회의 팀 수와 문제 수이다. 팀은 11번부터 tt번까지, 문제는 11번부터 pp번까지 번호가 매겨진다. 자신의 팀은 tt번 팀이다.
  • 두 번째 줄에는 t−1t - 1개의 실수 s1,…,st−1s_1, \ldots, s_{t-1}이 주어진다(각 ii에 대해 0≤si≤10 \le s_i \le 1). sis_i는 팀 ii의 실력이다.
  • 세 번째 줄에는 pp개의 실수 d1,…,dpd_1, \ldots, d_p가 주어진다(각 jj에 대해 0≤dj≤10 \le d_j \le 1). djd_j는 문제 jj의 난이도이다.
  • 그다음 t−1t - 1개의 줄이 다른 팀들의 문제 상태를 나타낸다. 각 줄에는 pp개의 문자 c1,…,cpc_1, \ldots, c_p가 주어진다. ii번째 줄의 cjc_j는 팀 ii의 문제 jj 상태를 나타내며, 고정 전에 그 문제를 풀었으면 X, 고정 후에 그 문제에 대한 프로그램을 제출했으면 ?, 그 외에는 -이다.
  • 마지막 줄은 자신의 팀이 푼 문제를 나타내며, pp개의 문자로 각각 X 또는 -이다.

입력의 모든 실수는 소수점 이하 자릿수가 최대 여섯 자리이다.

출력

자신의 팀이 GCPC 2019에서 우승했을 확률을 실수 하나로 출력한다. 답의 절대 오차 또는 상대 오차는 10−610^{-6} 이하여야 한다.

예제2

  1. 예제 1

    입력
    3 3
    0.95 0.95
    0.95 0.95 0.95
    ? ? ?
    X X -
    X X -
    
    예상 출력
    0.264908
    
  2. 예제 2

    입력
    2 5
    0.5
    0.1 0.2 0.3 0.4 0.5
    ? ? ? ? ?
    X - - - -
    
    예상 출력
    0.8387625