9719. Рабочий и
зарплата 2
Каждый рабочий получает
зарплату. Эта зарплата изменялась в течение года. Выведите фамилии рабочих с
окончательной зарплатой в конце года в порядке возрастания фамилий.
Вход.
Каждая строка содержит информацию о работнике: фамилию и зарплату. Если один и
тот же работник появляется в списке снова, то это означает что его зарплата
была изменена.
Выход.
Выведите фамилии и зарплаты всех работников на конец года в порядке возрастания
фамилий.
Пример входа |
Пример выхода |
Sidorov 100 Mamedov 150 Mamedov 250 Sidorov 110 Ivanov 200 Petrov 120 Sidorov 160 Ivanov 270 |
Ivanov 270 Mamedov 250 Petrov 120 Sidorov 160 |
структуры
данных map
Занесем
инфомацию о рабочих и их зарплатах в структуру данных map<string, int> m. Затем выведем все записи структуры m.
Реализация алгоритма
Объявим структуру данных map.
map<string, int> m;
Читаем входные данные. Заносим информацию о
рабочих в отображение m.
while (cin >> s >> salary)
m[s] = salary;
Выводим содержимое отображения m.
for (iter = m.begin(); iter != m.end(); iter++)
cout << iter->first << " " << iter->second << endl;
Java реализация – TreeMap
import java.util.*;
class Main
{
public static void
main(String[] args)
{
Scanner con = new Scanner(System.in);
TreeMap<String, Integer> tree = new TreeMap<>();
while(con.hasNext())
{
String s = con.next();
int salary = con.nextInt();
tree.put(s, salary);
}
for(String s : tree.keySet())
System.out.println(s + "
" + tree.get(s));
con.close();
}
}
Java реализация – HashMap + TreeMap
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>();
while(con.hasNext())
{
String s = con.next();
int salary = con.nextInt();
m.put(s, salary);
}
TreeMap<String, Integer> tree = new TreeMap<>();
tree.putAll(m);
for(Map.Entry<String, Integer> entry : tree.entrySet())
System.out.println(entry.getKey() + " " + entry.getValue());
con.close();
}
}