问题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

来源/分类


[提交] [状态]