CF461C Appleman and a Sheet of Paper

题目描述

Appleman 有一张非常大的纸。这张纸的形状是 $1\times n$ 的矩形。你的任务是帮助 Appleman 对这张纸进行折叠。实际上,你需要执行 $q$ 次操作。每次操作有以下两种类型之一: 1. 在位置 $p_i$ 处将纸张进行折叠。该操作后,纸张最左端宽度为 $p_i$ 的部分将被折叠到纸张最右端宽度为 $[当前纸张宽度]-p_i$ 的部分之上。 2. 询问:如果我们将在距离当前纸张左边界 $l_i$ 和 $r_i$ 处各切一次,只考虑两刀之间的所有纸片,所有这些纸片的总宽度是多少。 为了更好地理解题目,请参考第一个测试样例的解释。

输入格式

第一行包含两个整数:$n$ 和 $q$($1 \le n \le 10^{5}$,$1 \le q \le 10^{5}$)——纸张的宽度和操作的数量。 接下来的 $q$ 行,每行为如下两种格式之一: - "$1\ p_i$"($1 \le p_i < [当前纸张宽度]$)——第一种操作类型。 - "$2\ l_i\ r_i$"($0 \le l_i < r_i \le [当前纸张宽度]$)——第二种操作类型。

输出格式

对于每个第二种类型的查询,输出答案。

说明/提示

下图展示了第一个样例在各次操作后的纸张形状: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/CF461C/0d6f18a0c20d16406159d704035cbac205902978.png) 第一次折叠后,纸的宽度变为 $4$,第二次折叠后,纸的宽度变成 $2$。 由 ChatGPT 5 翻译