9718. Рабочий и
зарплата
Каждый работник получает
зарплату. Выведите зарплату для заданного работника.
Вход.
Первая строка содержит количество рабочих n. Каждая из следующих n строк содержит информацию про работника: фамилию и зарплату. Далее
следуют q запросов. Следующие q строк содержат фамилию работника.
Выход.
Для каждого запроса – фамилии рабочего – выведите его зарплату. Если фамилия отсутствует в списке рабочих, то выведите
-1.
Пример входа |
Пример выхода |
4 Sidorov 100 Mamedov 150 Ivanov 200 Petrov 120 3 Mamedov Petrov Vasechkin |
150 120 -1 |
структуры
данных map
Занесем
инфомацию о рабочих и их зарплатах в структуру данных map<string, int> m. Для каждого запроса – строки s (фамилии рабочего) выведем
соответствующее значение m[s].
Реализация алгоритма
Объявим структуру данных map.
map<string, int> m;
Читаем входные данные. Заносим информацию о
рабочих в отображение m.
cin >> n;
for (i = 0;
i < n; i++)
{
cin >> s >> salary;
m[s] = salary;
}
Читаем число запросов q.
cin >> q;
for (i = 0;
i < q; i++)
{
Читаем фамилию рабочего s. Если такой рабочий
существует в отображении m, то выводим его зарплату m[s]. Иначе выводим -1.
cin >> s;
if (m.count(s) > 0)
printf("%d\n", m[s]);
else
printf("-1\n");
}
Java реализация
import java.util.*;
class Main
{
public static void
main(String[] args)
{
Scanner con = new Scanner(System.in);
Map<String,Integer> m = new HashMap<String,Integer>();
int n = con.nextInt();
for(int i = 0; i < n; i++)
{
String s = con.next();
int salary = con.nextInt();
m.put(s, salary);
}
int q = con.nextInt();
for(int i = 0; i < q; i++)
{
String s = con.next();
int salary = -1;
if (m.containsKey(s)) salary = m.get(s);
System.out.println(salary);
}
con.close();
}
}