СДАМ ГИА: РЕШУ ЕГЭ
Образовательный портал для подготовки к экзаменам
Информатика
Информатика
Cайты, меню, вход, новости


Задания
Версия для печати и копирования в MS Word
Задания Д19 C4 № 3101

 На автозаправочных станциях (АЗС) продается бензин с маркировкой 92, 95 и 98. В городе N был проведен мониторинг цены бензина на различных АЗС.

Напишите эффективную по времени работы и по используемой памяти программу (укажите используемую версию языка программирования, например, Borland Pascal 7.0), которая будет определять для каждого вида бензина, сколько АЗС продают его дешевле всего. На вход программе в первой строке подается число данных о стоимости бензина. В каждой из последующих N строк находится информация в следующем формате:

<Компания> <Улица> <Марка> <Цена>

где <Компания> – строка, состоящая не более, чем из 20 символов без пробелов, <Улица> – строка, состоящая не более, чем из 20 символов без пробелов, <Марка> – одно из чисел – 92, 95 или 98, <Цена> – целое число в диапазоне от 1000 до 3000, обозначающее стоимость одного литра бензина в копейках. <Компания> и <Улица>, <Улица> и <Марка>, а также <Марка> и <цена> разделены ровно одним пробелом. Пример входной строки:

Синойл Цветочная 95 2250

Программа должна выводить через пробел 3 числа – количество АЗС, продающих дешевле всего 92-й, 95-й и 98-й бензин соответственно. Если бензин какой-то марки нигде не продавался, то следует вывести 0.

Пример выходных данных:

12 1 0

Решение.

var

min, ans: array[92..98] of integer;

c: char;

i, k, N, b: integer;

begin

for i:=92 to 98 do

begin

min[i]:=3001;{допустимо и другое число, > 3000}

ans[i]:=0;

end;

readln(N);

for i:=1 to N do

begin

repeat

read(c);

until c=' '; {считана компания}

repeat

read(c);

until c=' '; {считана улица}

readln(k,b);

if min[k] > b then

begin

min[k]:=b;

ans[k]:=1

end else

if min[k] = b then ans[k]:=ans[k]+1;

end;

{если бензина какой-то марки не было,

ans[i] осталось равным 0}

writeln(ans[92],' ', ans[95],' ', ans[98])

end.