#P3984. Dancing Club

    ID: 7421 传统题 1000ms 128MiB 尝试: 4 已通过: 1 难度: 10 上传者: 标签>CSPJ-重点算法班优先队列数据结构

Dancing Club

题目描述

nn 个人参加一个舞蹈课。每个人的舞蹈技术由一个整数决定。在舞蹈课的开始,他们从左到右站成一排。当这一排中至少有一对相邻的异性时,舞蹈技术相差最小的那一对会出列并开始跳舞。如果不止一对,那么最左边的那一对出列。一对异性出列之后,队伍中的空白按原顺序补上(即:若队伍为 ABCDABCD,那么 BCBC 出列之后队伍变为 ADAD)。舞蹈技术相差最小即两人舞蹈技术之差的绝对值最小。

任务是模拟以上过程,确定跳舞的配对及顺序。

输入格式

第一行一个正整数 nn,表示队伍中的人数。

第二行包含 nn 个字符,每个字符为 B(男)或 G(女),表示每个人的性别。

第三行包含 nn 个整数 a1,a2,,ana_1, a_2, \dots, a_n,表示每个人的舞蹈技术。所有信息按照从左到右的顺序给出。

输出格式

第一行一个整数 kk,表示出列的总对数。

接下来 kk 行,每行两个整数,表示一对舞伴的编号(按输入顺序从左往右 11nn 编号),先输出较小的整数,再输出较大的整数。按跳舞顺序输出。

样例

4
BGBG
4 2 4 3
2
3 4
1 2

数据范围与提示

  • 对于 50%50\% 的数据:1n2001 \le n \le 200
  • 对于 100%100\% 的数据:1n2×1051 \le n \le 2 \times 10^51ai1071 \le a_i \le 10^7

来源

CSPJ-重点算法班