Задача №1851. Деньги Фирма Julick&Co ведет учет своих доходов и расходов. Но главный бухгалтер этой фирмы не любит математику, поэтому всякую сумму денег, которую фирма получает или отдает, он характеризует некоторым признаком. Например, сумму денег от 5 до 10 рублей он может охарактеризовать словом "МАЛО", а от 7 до 60 рублей словом "МНОГО". Время от времени он пересчитывает деньги и записывает признак суммы, которая имеется у фирмы. Недавно налоговая инспекция заинтересовалась доходами данной организации. Она хочет узнать, какая минимальная и максимальная сумма денег может быть сейчас у этой фирмы или выяснить, что имеется ошибка в ее записях. Известно, что по законам страны, где развиваются события, в любой момент времени организация должна обладать неотрицательной суммой денег.
Входные данные
Первая строка входного файла содержит K (1≤K≤100) – количество признаков, которые бухгалтер использует для описания различных сумм денег. На следующих K строках содержатся соответствующие признаки Si и числа Mini и Maxi. Si - слово, состоящие не более чем из 20 латинских букв, отделенное от последующих чисел одним пробелом, Mini и Maxi - целые положительные числа (1≤Mini≤Maxi≤1000), разделенные одним пробелом. Следующая строка содержит количество денег, которое было у фирмы в начале ее деятельности – целое число . Затем следует число N – количество записей в бухгалтерской книге фирмы Julick&Co (1≤N≤100). Следующие N строк содержат записи в следующем формате: первый символ строки из множества {"+", "-", "!"} означает вид операции – доход, расход или подсчет денег соответственно. Непосредственно за этим символом (без пробелов) следует признак, характеризующий сумму денег, использованную в операции.
Выходные данные
Если в учетных записях содержится ошибка, выведите в выходной файл число −1, в противном случае выведите числа Min и Max - наименьшую и наибольшую сумму денег, которая может быть у фирмы Julick&Co.
Примеры тестов
входные данные
3
LITTLE 1 5
MIDDLE 4 10
BIG 18 50
11
3
+MIDDLE
!BIG
-LITTLE
выходные данные
13 20
На паскале
1)
2) 3 единицы
3) 24D
4) 6
5) 2 раза
Объяснение:
2)
3) Переводим число в 16-ичную систему счисления, для этого делим его на 16 и запоминаем остаток. Затем результат деления также делим на 16 и запоминаем остаток. Повторяем эти действия до тех пор, пока частное не будет равно 0:
589 : 16 = 36, остаток 13
36 : 16 = 2, остаток 4
2 : 16 = 0, остаток 2
Затем записываем остатки от деления в обратном порядке: 2 4 13
Заменяем числа больше 9 на буквы
(10 - A; 11 - B; 12 - C; 13 - D; 14 - E; 15 - F)
Результат:
4)
5) Посчитаем от 1 до 10 в 6-ичной системе счисления:
1 2 3 4 5 10 11 12 13 14
//PascalABC.NET версия 3.2, сборка 1389
//Если программа не запускается, то обновите версию
uses System.Linq;
begin
writeln('III');
var a := ReadArrInteger('Документы', ReadInteger('n=')).ToList;
writeln;
while a.Any() do
begin
write(a[0], ' ');
a.RemoveAt(0);
if not a.Any then break;
write(a.Last, ' ');
a.RemoveAt(a.Count - 1);
if not a.Any then break;
var n := 0;
if a.Count > 1 then n := a.Count div 2 - 1;
write(a[n], ' ');
a.RemoveAt(n);
end;
end.
Объяснение: