26.09 Прочие прототипы
Ошибка.
Попробуйте повторить позже
На складе есть площадка, разделённая на рядов (пронумерованных от 1 до
сверху вниз) и
мест в каждом
ряду (пронумерованных от 1 до
слева направо). Некоторые места уже заняты другими ящиками. Необходимо
разместить новый ящик, занимающий два соседних места в одном ряду, так, чтобы он находился как
можно дальше от входа (в ряду с максимальным номером), и в тех же местах во всех рядах выше него не
было других ящиков. Если в ряду есть несколько подходящих вариантов, выбрать места с наименьшими
номерами.
Входные данные
Первая строка входного файла содержит три числа: — количество занятых мест (
— натуральное, не
превышает
),
— количество рядов,
— количество мест в ряду. В следующих
строках — по два
числа: номер ряда и номер места, занятого ящиком (натуральные числа, не превышающие
и
соответственно).
Выходные данные
Два целых положительных числа через пробел: номер ряда и наименьший номер места, куда можно поставить ящик.
Пример входного файла:
Ящик можно поставить в ряду на места
и
, так как над этими местами нет занятых клеток. Ответ:
.
Решение 1
f = open(’26_boxes.txt’) n, m, k = map(int, f.readline().split()) a = sorted([list(map(int, i.split()))[::-1] for i in f]) places = [[] for i in range(k)] for i in a: places[i[0]-1].append(i[1]) for i in range(k): if not(places[i]): places[i].append(m+1) mx = x = 0 for i in range(k-1): current_min = min(places[i][0], places[i+1][0]) if current_min > mx: mx = current_min x = i # Запоминаем индекс места print(mx - 1, x + 1)
Решение 2
f = open(’26_boxes.txt’) n, m, k = [int(x) for x in f.readline().split()] field = [m + 1] * (k + 1) for line in f: x, y = [int(i) for i in line.split()] field[y] = min(field[y], x) res = [0, 0] for i in range(1, k): mn = min(field[i], field[i + 1]) - 1 if mn > res[0] and mn > 0 and not (field[i] == mn or field[i + 1] == mn): res = [mn, i] elif mn == res[0] and mn > 0 and not (field[i] == mn or field[i + 1] == mn): res[1] = min(res[1], i) print(*res)
Специальные программы

Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!
Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.

Бесплатное онлайн-обучение
Для школьников из приграничных территорий России, проживающих в ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Курской, Брянской областях и Крыму.

Налоговые вычеты
Узнай, как получить налоговый вычет при оплате обучения в «Школково».

Специальное предложение
для учителей
Бесплатный доступ к любому курсу подготовки к ЕГЭ, ОГЭ и олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!

Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!