Новая Школа - онлайн-школа подготовки к ЕГЭ
При поддержке
Тренировки Пробники Статистика Карточки Учебник Об экзамене Учительская
  • Тренажёр заданий ЕГЭ
  • Тренажёр ЕГЭ по Информатике
  • Список заданий №26
  • Задание №26
  • Задание №70222 ЕГЭ Информатике

    Условие задания #70222

    №26 по КИМ

    При онлайн-⁠покупке билета на концерт известно, какие места в зале уже заняты. Необходимо купить билет на такое место в ряду, чтобы перед ним как можно больше идущих подряд кресел с таким же номером было свободно. Если места, удовлетворяющие этому условию, есть в нескольких рядах, то нужно выбрать ряд, расположенный как можно ближе к сцене. В ответе запишите два целых числа: искомый номер ряда и количество свободных кресел перед выбранным местом. Нумерация рядов и мест ведётся с 1. Гарантируется, что хотя бы одно такое место в зале есть.

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

    В первой строке входного файла находятся три числа: N  — количество занятых мест в зале (целое положительное число, не превышающее 10 000), М  — количество рядов (целое положительное число, не превышающее 100 000) и K  — количество мест в каждом ряду (целое положительное число, не превышающее 100 000). В следующих N строках находятся пары натуральных чисел: номер ряда и номер места занятого кресла соответственно (первое число не превышает значения M, а второе  — K).

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

    Два целых положительных числа: искомый номер ряда и количество свободных кресел перед выбранным местом.

    2626.txt

    Ответ

    Ответ:

    665 61

    Решение

    File = open("pr1.txt")
    N, M, K = map(int, File.readline().split())
    places = [] 
    for i in range(N):
        row, place = map(int, File.readline().split())
        places.append([place, row]) 
    places.sort()
    maxCount = 0
    minRow = 0
    for p in range(1, N):
        previousPlace = places[p - 1][0] 
        previousRow = places[p - 1][1] 
        currentPlace = places[p][0] 
        currentRow = places[p][1] 
        if currentPlace == previousPlace:
            count = (currentRow - 1) - (previousRow + 1)
            if maxCount < count:
                maxCount = count
                minRow = currentRow - 1
            elif maxCount == count:
                minRow = min(minRow, currentRow - 1)
        elif currentPlace - previousPlace == 1:
            count = M - (previousRow + 1)
            if maxCount < count:
                maxCount = count
                minRow = M
            elif maxCount == count:
                minRow = min(minRow, M)
            count = currentRow - 2
            if maxCount < count:
                maxCount = count
                minRow = currentRow - 1
            elif maxCount == count:
                minRow = min(minRow, currentRow - 1)
        else: 
            maxCount = K - 1 
            minRow = M 
            break
    print(minRow, maxCount)

    Понятно ли решение?

    Похожие задания

    15
    Задание №46720Задание №46721Задание №46752Задание №51424Задание №46719Задание №32183Задание №46642Задание №32179Задание №41214Задание №46643Задание №56108Задание №41209Задание №41208Задание №36692Задание №46645
    Бесплатно

    Решай задачи ЕГЭ в приложении

    Скачивай наш Тренажер ЕГЭ на iPhone или Android и тренируйся в любое время и в любом месте!

    Саша — ассистент в телеграмме