Вопрос Кинотеатр python в кинотеатре n рядов по m мест в каждом.

Регистрация
20 Июн 2013
Сообщения
73
Репутация
1
Спасибо
0
Монет
0
Кинотеатр

В кинотеатре 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
 
l,k = [[i.count("1") for i in input().split('0')] for i in range(list(map(int, input().split()))[0])],int(input())
print( 0 if not [v+1 for v, _k in enumerate(l) if k in _k] else [v+1 for v, _k in enumerate(l) if k in _k][0])
 
n, m = map(int, input().split())
t, p = [''.join(input().split()) for _ in range(n)], '0' * int(input())
for i, s in enumerate(t, start=1):
if p in s:
print(i)
break
else: print(0)
 
О, старина Сириус... m = [[0,1,1,1,1,1,0],
[0,1,0,0,1,0,0,0,1],
[1,1,1,1,1,1,1,1,1],
[0,1,0,0,0,1],
[1,1,1,1,1],
[1]
]
kk = 2
def f(n):
global j, kk
k = kk
res = 0
for i in range(len(n) - k + 1):
if not sum(n[i:k]): res = j
k += 1
return res

cinema = []
for j in m:
cinema += [f(j)]
result = list(map(lambda x: len(x) if x else 0,cinema))
if result.count(0) == len(result):
print('таких мест нет')
else:
max_ = max(result)
for i in range(len(result)):
if result < max_ and result:
max_ = result
print(kk,'находящихся рядом свободных места находятся в', result.index(max_) + 1, 'ряду. И у него наименьшая длина из всех вариантов')
 
def find_available_row(n, m, seats, k):
for row in range(n):
consecutive_free_seats = 0
for seat in seats[row]:
if seat == 0:
consecutive_free_seats += 1
if consecutive_free_seats == k:
return row + 1 # Нумерация рядов начинается с 1
else:
consecutive_free_seats = 0
return 0

# Ввод данных
n, m = map(int, input().split())
seats = [list(map(int, input().split())) for _ in range(n)]
k = int(input())

# Поиск подходящего ряда
result = find_available_row(n, m, seats, k)

# Вывод результата
print(result)
 
Назад
Сверху