Школа программиста

Забыли пароль?
[задачи] [курсы] [олимпиады] [регистрация]
Логин:   Пароль:    
Скрыть меню
О школе
Правила
Олимпиады
Фотоальбом
Гостевая
Форум
Архив олимпиад
Архив задач
Состояние системы
Рейтинг
Курсы
Новичкам
Работа в системе
Курсы ККДП
Дистрибутивы
Статьи
Ссылки


 

Детали

(Время: 1 сек. Память: 16 Мб Сложность: 20%)

Подсчитаем, сколько пустых клеток находится между двумя деталями в каждой строке. Из всех строк выберем ту, в которой это количество минимально (или одну из них, если таковых несколько). Покажем, что число пустот в этой строке и будет ответом на задачу.

Если мы сдвинули деталь B на одну клетку влево, то количество пустот в каждой строке уменьшится на единицу. Деталь упрётся лишь в том случае, когда в какой-то строке пустоты во-обще исчезнут, а одной из первых таких строк будет именно выбранная. Осталось заметить, что, так как за каждый сдвиг число пустот в выбранной строке уменьшалось на единицу и в конце оно стало равным нулю, то количество сдвигов и есть начальное количество пустот в строке.

Приведем одну из возможных реализаций решения данной задачи:

read(n,m)
min=101
for i=1..n{ 
  read(s)
  p=0
  for j=1..m
    if(s[j]='.') p=p+1
  if(p < min) min=p
}
write(min)

[Обсуждение] [Все попытки] [Задача]


Красноярский краевой Дворец пионеров, (c)2006 - 2026, ИНН 246305493507, E-mail: admin@acmp.ru