На автозаправочных станциях (АЗС) продается бензин с маркировкой 92, 95 и 98. В городе N был проведен мониторинг цены бензина на различных АЗС. Напишите эффективную по времени работы и по используемой памяти программу, которая будет определять для каждого вида бензина, сколько АЗС продают его дешевле всего. На вход программе в первой строке подается число АЗС, участвующих в мониторинге стоимости бензина. В каждой из последующих N строк находится информация в формате:
<Компания> <Улица> <Марка> <Цена>
где
<Компания> — строка, состоящая не более чем из 20 символов без пробелов, <Улица> — строка, состоящая не более чем из 20 символов без пробелов, <Марка> — одно из чисел 92, 95 или 98,
<Цена> — целое число в диапазоне от 1000 до 3000, обозначающее стоимость одного литра бензина в копейках.
<Компания> и <Улица>, <Улица> и <Марка>, <Марка> и <Цена> разделены ровно одним пробелом.
Пример входной строки: Синойл Цветочная 95 2250
Программа должна выводить через пробел три числа — количество АЗС, продающих дешевле всего 92-й, 95-й и 98-й бензин соответственно. Если бензин какой-то марки нигде не продавался, то следует вывести 0.
Пример выходных данных: 12 1 0Решение задачи №1
var
min: array[92..98]of integer; {задаем массив, в котором будет храниться минимальное значение цены марки бензина}
azs: array[92..98]of integer; {задаем массив, в котором будет храниться количество АЗС, продающих бензин по минимальной цене}
i,n,m,cen:integer; {задаем переменные: i - переменная счетчик, n - количество АЗС, участвующих в мониторинге, m - марка бензина, cen - цена бензина}
str:char; {символьная переменная для чтения названия компании и улицы}
begin
for i:=92 to 98 do {зададим массивам начальные значения}
begin
min[ i ]:=3001; {массиву минимальных значений (min) присвоим максимальное значение (выходящее из рамков задачи) равное 3001}
azs[ i ]:=0; {массиву количества АЗС (azs) присвоим минимальное значение (0)}
end;
readln(n); {считываем количество АЗС, участвующих в мониторинге}
for i:=1 to n do begin {задаем цикл c постусловием в котором будем считывать значения введенные с клавиатуры}
repeat {для того чтобы считать символы названия компании АЗС запускаем цикл, который считывает каждый символ до пробела}
read(str); {считываем символы до пробела}
until str=' '; {проверяем условие str=' ' (является ли символ пробелом), если символ пробел выходим из цикла (прекращаем считывание названия компании}
repeat {задаем цикл для считывания названии улицы аналогично предыдущему циклы}
read(str);
until str=' ';
readln(m,cen); {считываем марку бензина (m) и цену бензина (n)}
if min[m]>cen then {проверяем меньше ли цена бензина значения массива минимума (min), при первом проходе цикла считывания данных с клавиатуры данное условие будет выполняться, так как изначально значение массива минимума равно 3001, что больше условии задачи (диапазон цен от 1000 до 3000)}
begin {если цена бензина меньше, то....}
min[m]:=cen; {массив минимальных значений принимает значение данной цены}
azs[m]:=1; {а массив количества АЗС с минимальной ценой бензина принимает значение 1}
end
else {если цена бензина больше либо равна значению массива минимальной цены, то...}
if min[m]=cen then {проверяем равна ли цена значению массива минимальной цены}
azs[m]:=azs[m]+1; {если есть равенство, тогда значение массива количества АЗС с минимальной ценой увеличиваем на 1}
end;
write('Результат: ');
writeln(azs[92],' ',azs[95],' ',azs[98]); {выводим результаты, разделяя их пробелами}
end.

Алгоритм решения задачи:
- Считать вводимые с клавиатуры значения марки бензина и его цены (переменные m и cen).
- Сравнить значение массива минимальной цены (min), значение которого в начале программы равно 3001(заведомо больше минимально допустимой в задаче цены) c ценой бензина (cen), в случае если цена ниже массива минимума, тогда значение массива минимума принимает значение цены, а значение массива количества (azs) принимает значение единицы.
- Если значение массива минимальной цены (min) больше или равно значению цены (cen), то проверяем равенство значений цены и массива минимума.
- Если цена бензина равна значению массива минимума, тогда значение массива количества АЗС с минимальной ценой увеличивается на единицу.

