#C05L03P06. C05.L03.下标计数(二).课堂练习6.灯光开关切换

C05.L03.下标计数(二).课堂练习6.灯光开关切换

题目描述

Farmer John 为了保持奶牛拥有一个聪明的脑袋(很令人怀疑,囧),所以让它们玩脑力开发玩具。其中一个较大型的玩具就是在牛棚中的电灯。农场中总共有 N ( 2 <= N <= 500 ) 个牛棚,每个牛棚上方都有一个编号为 1 到 N 的彩色灯泡。

傍晚时分,所有的灯泡都是关闭着的。奶牛们通过 N 个按钮来控制着灯泡的开与关。按下编号为 i 的按钮会使编号为 i 的灯泡的状态改变,比如从开到关,从关到开。

奶牛们阅读并执行一个由 M ( 1 <= M <= 2000 ) 个操作符和它的参数所组成的操作清单。每个操作符由一个整数表示 ( 0 <= 操作符 <= 1 )。

编号为 0 的操作符包括 2 个参数,SiS_iEiE_i ( 1 <= SiS_i <= EiE_i <= N ),要求奶牛依次按下了从第 SiS_i 号开关到第 EiE_i 号的开关。

编号为 1 的操作符仍然有2个参数,SiS_iEiE_i 。这条命令要求奶牛数出在第 SiS_i 号和第 EiE_i 号灯泡之中,有多少灯泡是亮着的。

请你帮助 Farmer John 确定奶牛是否按下了正确的按钮和数出正确的答案。

输入格式

第一行:2 个由空格分开的整数 N 和 M 。

第二行到第 M+1 行:每一行有 3 个由空格分开的整数:操作符(0或1),SiS_iEiE_i

输出格式

每次出现 1 号操作符就输出一次正确的当前灯光状态为开的灯泡数量。

样例

4 5
0 1 2
0 2 4
1 2 3
0 2 4
1 1 4
1
2

样例解释

指令

灯泡状态

O表示关,*表示开

指令的操作解释 输出信息
初始状态 O O O O
0 1 2 * * O O 切换编号为 1 和 2 的灯泡的状态
0 2 4 * O * * 切换编号为 2,3,4 的灯泡的状态
1 2 3 * O * * 输出从编号 2 到编号 3 之间灯泡状态为开的灯泡数量 1
0 2 4 * * O O 切换编号为 2,3,4 的灯泡的状态
1 1 4 * * O O 输出从编号 1 到编号 4 之间灯光状态为开的灯泡数量 2
i