10295. Набор очков
Задан словарь из m слов,
каждому из которых поставлено в соответствие некоторое число. Имеются n
резюме, разделенные строкой из одного символа ‘.’. Необходимо найти в каждом
резюме все слова из словаря и просуммировать числа, соответствующие им.
Результирующая сумма – это оклад, который будет получать рабочий.
Вход.
Первая строка содержит два числа m и n (m £ 1000, n £ 100). Далее следует словарь из m
строк, каждая из которых содержит слово (до 16 символов нижнего регистра) и
соответствующую ему сумму денег (целое число от 0 до 1000000).
Выход. Для каждого резюме вычислить
оклад его обладателя.
7 2administer 100000spending 200000manage 50000responsibility 25000expertise 100skill 50money 75000the incumbent will administer the spending of kindergarden milk moneyand exercise responsibility for making change he or she will shareresponsibility for the task of managing the money with the assistantwhose skill and expertise shall ensure the successful spending exercise.this individual must have the skill to perform a heart transplant andexpertise in rocket science.
Пример выхода
700150150
обработка текста
Занесем словарь в структуру
данных map<string,int> voc. Читаем
слова из резюме и складываем соответствующие им числа из словря.
Во втором резюме из словаря
встречаются лишь слова expertise (стоимость 100) и skill (стоимость 50). Таким
образом, оклад обладателя второго резюме составит 150.
Объявим словарь voc. В символьный массив s читаем слова из резюме.
map<string,int> voc;
char s[20];
Читаем размер словаря m и количество резюме jobs. Читаем слова из словаря с их
стоимостями и заносим в словарь voc.
scanf("%d %d",&m,&jobs);
for(i = 0; i < m; i++)
{
scanf("%s
%d",s,&value);
voc[s] = value;
}
Обрабатываем jobs
резюме. В переменной value
накапливаем оклад рабочего. Для каждого прочитанного слова из резюме находим
его стоимость в словаре и прибавляем к value.
Если слово s отсутствует в словаре voc, то voc[s] = 0.
for(i = 0; i < jobs; i++)
{
value = 0;
while(scanf("%s",s),s[0]!='.') value += voc[s];
printf("%d\n",value);
}