#Z1022. 日记分段
日记分段
题目描述
小 C 每天都会写一篇日记。日记由若干个句子组成,每个句子都以句号 .、问号 ? 或感叹号 ! 结尾。
现在小 C 想把整篇日记分成若干段。每个段落必须满足:
- 段落的字符总数不能超过 ;
- 一个句子必须完整地放在同一段里,不能被拆开;
- 一个段落可以包含一个或多个连续的完整句子。
请你计算最少需要分成多少段。
如果某个句子本身的长度就超过 ,那么无论如何都无法满足要求,请输出 Impossible。
输入格式
第一行一个正整数 ,表示每段最多能容纳的字符数。
第二行一个字符串 ,表示日记内容。字符串中可能包含空格,因此需要按整行读入。
输出格式
如果可以完成分段,输出一行一个整数,表示最少段落数。
如果无法完成分段,输出 Impossible。
样例
15
Hi!How are you?I'm fine.Thank you.
3
5
Hello!
Impossible
6
A.BC!D?
2
样例解释
样例 1 中,四个句子的长度分别为 。可以分成 Hi!How are you?、I'm fine.、Thank you. 三段。
样例 2 中,唯一的句子 Hello! 长度为 ,超过了每段最大长度 ,所以无解。
样例 3 中,三个句子的长度分别为 。前两个句子可以放入第一段,第三个句子放入第二段。
数据范围与约定
| 子任务 | 分值 | 限制 |
|---|---|---|
| 保证日记中只有一个句子 | ||
| 保证每个句子长度都不超过 ,且答案不超过 | ||
| 无特殊限制 |
对于 的数据,保证 ,, 仅包含大小写英文字母、数字、空格和常见英文标点,且最后一个字符一定是 .、? 或 !。