06. Настройки приложения

☰ Теория

Словарь Dictionary<TKey, TValue>

Что хранит. Хранит пары «ключ — значение». Ключи уникальны, значения могут повторяться. Ключ обозначает запись и не является её порядковым номером.

Для чего используют. Подходит для настроек, остатков товара, счётчиков посещений: значение нужно быстро находить по имени или идентификатору.

Основные операции

Запись на C#Назначение
d[key] = valueСоздать запись или заменить прежнее значение.
d.Add(key, value)Добавить только новый ключ; повторный ключ вызывает ошибку.
d.TryGetValue(key, out value)Проверить наличие и получить значение; возвращает true или false.
d.ContainsKey(key)Проверить наличие ключа.
d.Remove(key)Удалить запись; вернуть false, если ключа нет.
d.CountКоличество ключей.
d.KeysКлючи для перебора; нужный порядок задавайте отдельно.

Пример

Для примера нужны using System; и using System.Collections.Generic;. Код выполняется внутри Main.

Dictionary<string, int> stock = new Dictionary<string, int>();
stock["tea"] = 2;
stock["tea"] += 1;             // Изменяем существующую запись.
int amount;
if (stock.TryGetValue("tea", out amount))
    Console.WriteLine(amount);
Console.WriteLine(stock.ContainsKey("water"));

Вывод:

3
False

Важно. Чтение d[key] требует существующего ключа. Значение 0 и отсутствие записи — разные случаи. Не полагайтесь на порядок обхода словаря.

Для этой задачи

  • Добавление и замена. Add и присваивание по ключу по-разному обрабатывают уже существующий ключ.

Хранилище настроек связывает строковый ключ с целым значением. Изначально настроек нет. Команда ADD разрешает только новый ключ, а SET может и создать настройку, и заменить её значение. Регистр команд важен.

Команды

КомандаДействие и ответ
ADD key valueСоздать новый ключ: OK. Если ключ уже существует: EXISTS, прежнее значение сохраняется.
SET key valueСоздать или изменить настройку: OK.
GET keyВывести значение или MISSING.
DELETE keyУдалить настройку: OK; если ключа нет: MISSING.
COUNTВывести число настроек.

Входные данные

Первая строка содержит q. Затем идут q команд, по одной в строке.

Выходные данные

Для каждой команды выведите ровно одну строку по таблице. Неуспешные команды не изменяют хранилище.

Не выводите приглашения к вводу и пояснения. Служебные слова в ответах пишите в указанном регистре.

Ограничения

1 ≤ q ≤ 100000; ключ — от 1 до 20 строчных латинских букв; значение от −10⁹ до 10⁹.

Примеры
Входные данныеВыходные данные
1
9
ADD volume 10
ADD volume 20
GET volume
SET volume 20
SET brightness 0
COUNT
DELETE volume
GET volume
GET brightness
OK
EXISTS
10
OK
OK
2
OK
MISSING
0
2
5
GET theme
DELETE theme
COUNT
SET theme -1
GET theme
MISSING
MISSING
0
OK
-1

Напишите программу
Auto
       

time 3000 ms
memory 256 Mb
Правила оформления программ и список ошибок при автоматической проверке задач

Статистика успешных решений по компиляторам