#HK5453. 「UOI 2018 Stage 4 Day2」文本编辑器

「UOI 2018 Stage 4 Day2」文本编辑器

题目描述

题目译自 Ukrainian Olympiads in Informatics 2018 Stage 4 Day2 T3. Текстовий редактор

想象一下,你被一家大型软件公司聘用,成为一名强大的文本编辑器的开发者。当然,现代文本编辑器包含大量功能,但其开发可以通过一个通用方法得以简化:将编辑器的所有功能分解为独立的函数和库,每个函数或库的开发都可以由一个开发团队甚至单个程序员完成。

文本的形成方式如下:用户每次在文本的末尾或开头添加一个单词,并用空格将该单词与前面的或后面的单词分隔开。文本编辑器窗口的一行最多可以容纳 LL 个字符(包括空格)。编辑器实现了标准的换行逻辑:第一个无法放入前一行的单词将被转移到下一行。如果两个相邻的单词位于不同行,则它们之间的空格会消失。

你的任务是实现一个辅助程序,实时计算用户输入的文本所占用的行数。

输入格式

输入文件的第一行包含两个自然数,均不超过 10510^5:一行中最大字符数 LL 和编辑器的总操作数 NN。这里操作指的是以下三种类型之一:

  1. 用户在文本末尾添加一个单词;
  2. 用户在文本开头添加一个单词;
  3. 需要计算当前文本占用的行数。

接下来有 NN 行,每行包含一个或两个数字:操作类型(1、2 或 3),对于操作类型 1 和 2(输入单词),通过空格分隔的第二个数字是用户输入的单词长度。单词长度是一个自然数,且不会超过一行的最大长度 LL。输入文件中的第一个操作只能是类型 1 或类型 2 的操作,均应解释为向空的文本中添加第一个单词。此外,输入文件中至少包含一个类型 3 的操作。

输出格式

输出文件应包含与输入文件中类型 3 操作数量相同的行数。每行输出对应查询的结果,即查询时文本当前的行数。

10 9
1 6
1 3
3
2 1
3
3
1 5
1 1
3

1
2
2
3

在输入所有单词后,文本的第一行将包含长度为 1166 的单词,第二行包含长度为 3355 的单词,第三行包含一个长度为 11 的单词。

数据范围与提示

详细子任务附加限制及分值如下表所示:

子任务 分值 附加限制
11 88 L2L \leq 2
22 88 所有输入单词的总长度不超过 LL
33 77 N1000N \leq 1000 且输入文件中没有类型 2 操作
44 1414 输入文件中没有类型 2 操作
55 77 N1000N \leq 1000 且输入文件中没有类型 1 操作
66 1616 输入文件中没有类型 1 操作
77 77 N1000N \leq 1000
88 3333 无附加限制