Кинотеатр

AndreyNill

Новичок
Пользователь
Май 25, 2020
6
0
1
Кинотеатр
В кинотеатре n рядов по m мест в каждом. В двумерном массиве хранится информация о проданных билетах, число 1 означает, что билет на данное место уже продан, число 0 означает, что место свободно. Поступил запрос на продажу k билетов на соседние места в одном ряду. Определите, можно ли выполнить такой запрос.

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

Программа получает на вход числа n≤30 и m≤30 . Далее идут n строк, содержащих m чисел (0 или 1), разделённых пробелами. Затем дано число k.

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

Программа должна вывести номер ряда, в котором есть k подряд идущих свободных мест. Если таких рядов несколько, то выведите номер наименьшего подходящего ряда. Если подходящего ряда нет, выведите число 0.

Примеры
Ввод
2 4
1 1 0 0
0 0 1 1
4
Вывод
0


Если не трудно, то пожалуйста с объяснением
 

MacSeem

Пользователь
Пользователь
Май 15, 2020
37
6
8
опс. а куда пропали решения отсюда? интересная же задача и решение
 

Vlad_SD

Активный пользователь
Пользователь
Апр 7, 2020
91
45
18
Python:
nm = input().split(' ')  # список с размерами зала ['2', '4']
n, m = int(nm[0]), int(nm[1])

hall = [input() for _ in range(n)]  # ввод столько раз, сколько дожно быть рядов --> ['1 1 0 0', '0 0 1 1']
k = int(input())

# сосздаём строку через join (содержит нули через пробел ) --> '0 0 0 0'
check = ' '.join('0' * k)
check_list = [row for row in hall if check in row]  # смотрим есть ли такая же строка в строке поэлемнтно

print(1 if check_list else 0)  # если в список упало хоть что-то, значит есть такой ряд с местами подряд
 
Последнее редактирование:
  • Мне нравится
Реакции: MacSeem

Vlad_SD

Активный пользователь
Пользователь
Апр 7, 2020
91
45
18
опс. а куда пропали решения отсюда? интересная же задача и решение
решение было неверным, исправленное добавил :sneaky:
 
  • Мне нравится
Реакции: MacSeem

MacSeem

Пользователь
Пользователь
Май 15, 2020
37
6
8
решение было неверным, исправленное добавил :sneaky:
Если я правильно понял, сейчас она выводит только наличие или отсутствие необходимого количества мест подряд. В условии нужно чтобы ещё вывела и ряд, если он имеется.
 
  • Мне нравится
Реакции: Vlad_SD

Vlad_SD

Активный пользователь
Пользователь
Апр 7, 2020
91
45
18
Python:
check_list = [row for row in enumerate(hall, 1) if check in row[1]]
r = ' '.join([str(rows[0]) for rows in check_list])

a = 1 if check_list else 0
print('проверка наличия-->', a)
print('наличие -->', r if a else 'нет свободных рядов')

тогда я бы добавил такой блок, возможно можно и проще =)
 
Последнее редактирование:
  • Мне нравится
Реакции: MacSeem

Форум IT Специалистов