#P11921. [PA 2025] 看护 / Opieka

[PA 2025] 看护 / Opieka

题目背景

PA 2025 R3A.

题目描述

有一段时间 [0,l)[0,l) 被等分成 ll[0,1),[1,2),,[l1,l)[0,1),[1,2),\ldots,[l-1,l)

nn 个人轮流照顾婴儿。i[1,n],j[0,l)\forall i\in [1,n], j\in [0,l),我们知道第 ii 个人在时间 [j,j+1)[j,j+1) 内是否空闲。如果一个人在一段时间内是空闲的,他可以选择照顾婴儿或睡觉。

在时间段 [0,l)[0,l) 内,每个人最多可以入睡一次,醒来一次。公平起见,每个人睡眠时长必须相同,设为 ttt0t\ge 0)。那么某个人可以在 [a,a+t)[a,a+t) 内睡觉,当且仅当他在这段时间内空闲,且 a+tla+t\le l

婴儿在每个时刻都必须有人照顾,换句话说,x[0,l)\forall x\in [0,l),都必须至少有一个人在时刻 xx 清醒且空闲。在此前提下,合理安排每个人的睡眠时间,最大化 tt 的值。

可以证明,若存在一个合法的 tt,则 tt 的最大值一定是一个有理数。只需要以既约分数的形式输出这个精确值即可。

输入格式

第一行,两个正整数 n,ln,l

接下来 ii 行,第 ii 行一个长度为 ll 的字符串 sis_{i}

1in,0j<l\forall 1\le i\le n,\forall 0\le j\lt lsi,j=Xs_{i,j}=\texttt{X},表示第 ii 个人在时段 [j,j+1)[j,j+1) 忙碌;否则 si,j=.s_{i,j}=\texttt{.},表示第 ii 个人在时段 [j,j+1)[j,j+1) 空闲。

输出格式

如果无法做到「婴儿在每个时刻都必须有人照顾」,输出一行一个 1-1

否则,输出一个既约分数 x/yx/y(即 gcd(x,y)=1,y>0\gcd(x,y)=1,y\gt 0),表示合法的 tt 的最大值。特别地,若 tt 的最大值为 00,输出 0/1\texttt{0/1}

3 6
..X.XX
.X..X.
X..X..
4/3
3 2
..
XX
..
0/1
1 3
.X.
-1

提示

样例解释

  • 样例 11 解释:第 1,2,31,2,3 个人分别在 [0,4/3),[8/3,4),[4/3,8/3)[0,4/3),[8/3,4),[4/3,8/3) 内睡觉。
  • 样例 22 解释:第 22 个人没时间睡觉。
  • 样例 33 解释:在时刻 x=π/21.57x=\pi/2\approx 1.57 时,无人照顾婴儿。

数据范围

  • 1n181\le n\le 18
  • 1l1051\le l \le 10^5