#P1913. Cocktails

    ID: 914 传统题 1000ms 256MiB 尝试: 5 已通过: 1 难度: 10 上传者: 标签>模拟TUD Programming Contest 2001DarmstadtGermany

Cocktails

描述

背景

著名的意大利鸡尾酒调酒师安杰洛(AngeloAngelo)终于在罗马开设了他的新酒吧,并且即将让他的公司“安杰洛的鸡尾酒调配”(AngelosCocktailMixAngelo's Cocktail Mix,简称 ACMACM)在证券交易所上市。为了给证券交易所的投机者们提供一些有价值的信息,他想要发布一些关于他最常调配的鸡尾酒的统计数据。

问题

安杰洛收集了一些关于在他酒吧里一个典型夜晚所点鸡尾酒的数据。你的任务是计算出“十大最受欢迎的鸡尾酒”列表,该列表要包含鸡尾酒及其价格。这份列表将刊登在《著名鸡尾酒公报》(GazettodellococktailfamosoGazetto dello cocktail famoso)上,这是一份在意大利每日出版的专业鸡尾酒杂志。

十大鸡尾酒的排序标准主要是它们被调配的频率。如果有两种或更多种鸡尾酒被调配的次数相同,那么它们在安杰洛的食谱书中的位置将决定哪一种排在前面。十大鸡尾酒中的鸡尾酒必须至少被调配过一次。

当然,如果某个喝醉的顾客点了一种在安杰洛的食谱书中不存在的鸡尾酒,那么他会忽略这个订单。如果鸡尾酒在食谱书中,那么有一个小细节安杰洛忘了告诉你。他绝不会连续多次调配同一种鸡尾酒。所以,如果安杰洛接到了他刚刚调配过的同一种鸡尾酒的订单,那么他会转而调配他食谱书中的下一种鸡尾酒,或者,如果是他食谱书中的最后一种鸡尾酒,他会调配第一种鸡尾酒。

如果没有足够的原料来调配一种鸡尾酒,安杰洛也会做同样的事(也就是说,他会尝试调配他食谱书中的下一种鸡尾酒,必要时会翻到书的开头)。如果他的食谱书中没有足够的原料来调配任何一种鸡尾酒,他就会忽略当前的订单。

鸡尾酒的价格可以通过将其原料的加权价格乘以 33 再加上用于调配和服务的 1000010000 里拉来计算。

输入 第一行包含场景的数量。场景从 11 开始隐式编号。对于每个场景,有三个表格:

  1. 安杰洛的食谱书。

  2. 一张原料表。

  3. 一张鸡尾酒订单表。

食谱书由以下部分组成:

一行,包含食谱书中鸡尾酒的总数。

<li>接着,对于每种鸡尾酒有两行:</li>

第一行包含鸡尾酒的名称和不同原料的数量。

<li>第二行包含原料名称及其以厘升为单位的用量,用空格分隔。</li>

原料表由以下部分组成:

一行,包含可用原料的数量。

<li>对于每种原料,有一行包含原料名称、该原料以厘升为单位的可用量以及每厘升的价格(单位:里拉)。</li>

最后,鸡尾酒订单表由以下部分组成:

一行,包含订单的数量。

<li>对于每个订单,是鸡尾酒的名称。</li>

鸡尾酒和原料的名称是只包含字母数字字符或下划线(无空格)的字符串。所有的值都是整数,且最大为 1000010000

输出 对于输入中的每个场景 ii,打印一行“Scenario ii top cocktails:”,后面跟着按排名 111010 排序的十大列表。

对于列表中的每个条目,打印一行,包含排名、名称、鸡尾酒被调配的次数以及鸡尾酒的价格,每一项之间用一个空格分隔。

输入数据

1
3
White_Russian 3
Vodka 3 Coffe_Liqueur 2 Cream 1
Pina_Collada 4
White_Rum 4 Cream_of_Coconut 5 Pineapple_Juice 5 Cream 1
Cuba_Libre 3
White_Rum 4 Lemon_Juice 1 Cola 10
6
White_Rum 70 240
Vodka 70 120
Coffe_Liqueur 50 200
Cream_of_Coconut 20 150
Pineapple_Juice 100 40
Cream 40 20
4
Pina_Collada
Pina_Collada
White_Russian
Pina_Collada

输出数据

Scenario 1 top cocktails:
1 White_Russian 2 12340
2 Pina_Collada 2 15790