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();

  }

}