HXOJ4834. [五级原创] 卡牌排序

提交1 通过1
通过率100%
时间限制2000ms
内存限制256MiB

题目描述

卡牌排序

题目描述

珅泽教育的小珅同学有 n 张卡牌,编号依次是 1~n。除了花色为“王”的卡牌没有点数之外,其他的卡牌都有一种花色和一个点数。花色为 JOKER(王)、spade(黑桃♠)、heart(红桃♥)、diamond(方块♦)、club(梅花♣)之一,点数为 1~13 之一。

游戏规定,不同花色的牌具有的优先级如下:

  • JOKER 为第一优先级;
  • spade 为第二优先级;
  • club 和 diamond 为第三优先级;
  • heart 为第四优先级。

现在小珅要把所有卡牌进行排序,排序的规则为:

  1. 对于不同优先级的卡牌,优先级越高(数值越小),在卡牌中的位置越靠前;
  2. 对于同一优先级的卡牌,点数越小,在卡牌中的位置越靠前;
  3. 对于同一优先级且同一点数的卡牌,编号越小,在卡牌中的位置越靠前。

请你帮助小珅完成所有卡牌的排序。

输入描述

第一行包含一个整数 n,表示卡牌的张数。

接下来 n 行,其中第 i 行用来描述编号为 i 的卡牌,每行包含一个字符串 c,表示卡牌花色。如果 c 不为 JOKER,则还会有一个正整数 x 表示点数。保证 c 一定是 JOKER、spade、heart、diamond、club 之一。

输出描述

共 n 行,每行包含一个整数和一个字符串。第 i 行的整数和字符串表示排序之后第 i 张牌的原编号和花色。

样例 1

输入:

5
club 9
JOKER
diamond 6
spade 1
heart 12

输出:

2 JOKER
4 spade
3 diamond
1 club
5 heart

样例 2

输入:

5
club 6
JOKER
diamond 6
spade 1
heart 1

输出:

2 JOKER
4 spade
1 club
3 diamond
5 heart

原图在“输出数据 2”一栏仅写了 33,与本题要求的五行输出不符。这里完整保留了样例输入,并将输出按题目排序规则列出。

输入样例 #3

5
diamond 12
club 4
club 7
JOKER
JOKER

输出样例 #3

4 JOKER
5 JOKER
2 club
3 club
1 diamond

数据范围

  • 对于 40% 的数据:1 ≤ n ≤ 1000。
  • 对于 100% 的数据:1 ≤ n ≤ 10^5,1 ≤ x ≤ 13。