队列调整
该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
题目描述
军队训练时,队伍需要经常进行整理
一开始,总共n个人排成一行n列的长队,将这些人编号为1-n,第i列的人编号是i
长官会下一些命令去整理队伍
命令的形式就像 M i j
意思是将第i列的所有人并到第j列,就是让第i列的人直接排到第j列的人后面,队列内部的顺序不变
注意:空的队列也视为一列。
有时会发出询问,询问队列的情况
询问的形式就像 Q i j
意思是询问编号为i的人和编号为j的人之间有多少个人(i不等于j,之间的人数不包括i和j)
输入格式
第一行,两个整数n,q,表示队伍总共有n个人,一共有q次命令或询问
接下来的q行,每行一个大写字母和两个整数
若为“M i j”的形式,则进行队列调整 (注意空的队列也可以调整)
若为“Q i j”的形式,则询问当前的编号i和编号j之间有多少人
输出格式
按照每个询问出现的顺序,对每个询问输出1行一个整数,表示i和j之间的人数
如果i和j不在同一列则输出-1
输入样例
3 4
M 1 3
Q 1 2
M 3 2
Q 1 2
输出样例
-1
1
样例解释
一开始状态
第一列:1
第二列:2
第三列:3
执行“M 1 3”后:
第一列:空
第二列:2
第三列:3 1
询问“Q 1 2”由于1和2不在同一列,所以返回-1
执行“M 3 2后”:
第一列:空
第二列:2 3 1
第三列:空
询问“Q 1 2”:1和2之间有一个人3,所以返回1
数据范围
对于30%数据 n<=300,q<=500
对于60%数据 n<=3000,q<=5000
对于100%数据 0<n<=30000 , 0<q<=200000,1<=i,j<=n
限制
时间限制1s,空间限制256M
题目来源
题目改编自NOI2002"银河英雄传说"