问题3249--舞蹈课3249: 舞蹈课
时间限制: 1 Sec 内存限制: 512 MB
提交: 0 解决: 0
[提交] [状态] [讨论版] [命题人:]题目描述
有n个人参加一个舞蹈课,每个人的舞蹈技术用一个整数ai来表示。在舞蹈课开始时,他们从左到右站成一排。当这一排中至少有一对相邻的异性时,舞蹈技术相差最小的那一对会出列并开始跳舞(此处“最小”是指表示其舞蹈技术的整数ai绝对值的差最小)。如果不止一对,则最左边的那一对出列。一对异性出列之后,队列中出现的空白按原顺序补上(即:若原队列为ABCD,且BC出列,则出列后队列变为AD)。
你的任务是模拟以上的过程,并确定舞者的配对及顺序。
输入
第一行为:一个正整数n(1<=n<=2*10^5),表示队伍中的人数;
第二行:包含n个字符B或G(B表示男,G表示女);
下一行:n个整数ai(ai<=10^7)。所有信息按照从左到右的顺序给出。在50%的数据中,n<=200。
输出
第一行:出列的总对数k;
接下来输出k行,每行两个整数。按跳舞顺序输出。两个整数表示这一对舞者的编号(按输入顺序、从左至顺依次编号为1到n)。先输出较小的整数,再输出较大的整数。
样例输入
4
BGBG
4 2 4 3
样例2:
4
BGBB
1 1 2 3
样例输出
2
3 4
1 2
样例2:
1
1 2
来源/分类
[提交] [状态]