2、小美和小团所在公司的食堂有N张餐桌,从左到右摆成一排,每张餐桌有2张餐椅供至多2人用餐,公司职员排队进入食堂用餐。小美发现职员用餐的一个规律并告诉小团:当男职员进入食堂时,他会优先选择已经坐有1人的餐桌用餐,只有当每张餐桌要么空着要么坐满2人时,他才会考虑空着的餐桌;
当女职员进入食堂时,她会优先选择未坐人的餐桌用餐,只有当每张餐桌都坐有至少1人时,她才会考虑已经坐有1人的餐桌;
无论男女,当有多张餐桌供职员选择时,他会选择最靠左的餐桌用餐。现在食堂内已有若干人在用餐,另外M个人正排队进入食堂,小团会根据小美告诉他的规律预测排队的每个人分别会坐哪张餐桌。
package com.zqn.test;
import java.io.*;
import java.util.*;
public class Test002 {
public static void main(String[] args) throws IOException{
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));
int T = Integer.parseInt(reader.readLine());
for (int i = 0; i < T; i++) {
int N = Integer.parseInt(reader.readLine());
String tables = reader.readLine();
int M = Integer.parseInt(reader.readLine());
String enters = reader.readLine();
int[] res = solve(tables, enters);
for (int r : res) {
writer.write(Integer.toString(r));
writer.newline();
}
}
writer.flush();
}
private static int[] solve(String tables, String enters) {
List> pqs = new ArrayList<>(3);
pqs.add(new PriorityQueue<>());
pqs.add(new PriorityQueue<>());
pqs.add(new PriorityQueue<>());
for (int i = 0; i < tables.length(); i++) {
pqs.get(tables.charAt(i) - '0').add(i);
}
int[] res = new int[enters.length()];
for (int i = 0; i < enters.length(); i++) {
int table;
if (enters.charAt(i) == 'M') {
if (pqs.get(1).isEmpty()) {
table = pqs.get(0).poll();
pqs.get(1).add(table);
} else {
table = pqs.get(1).poll();
pqs.get(2).add(table);
}
} else {
if (!pqs.get(0).isEmpty()) {
table = pqs.get(0).poll();
pqs.get(1).add(table);
} else {
table = pqs.get(1).poll();
pqs.get(2).add(table);
}
}
res[i] = table + 1;
}
return res;
}
}



