Тема 26. Обработка целочисленной информации с использованием сортировки

26.05 Поиск мест на поле (билеты, саженцы, матрицы)

Вспоминай формулы по каждой теме
Решай новые задачи каждый день
Вдумчиво разбирай решения
ШКОЛКОВО.
Готовиться с нами - ЛЕГКО!
Подтемы раздела обработка целочисленной информации с использованием сортировки
Решаем задачу:

Ошибка.
Попробуйте повторить позже

Задача 1#63360

При проведении эксперимента заряженные частицы попадают на чувствительный экран, представляющий из себя матрицу размером 100 000 на 100 000 точек. При попадании очередной частицы на экран в файл записываются координаты чувствительного элемента: номер строки (целое число от 1 до 100 000) и номер позиции в строке (целое число от 1 до 100 000). Точка экрана, в которую попала хотя бы одна частица, считается светлой, точка, в которую ни одна частица не попала, – тёмной.

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

Входные данные представлены в файле следующим образом. В первой строке входного файла записано целое число N – количество частиц, попавших на экран. В каждой из следующих N строк записаны по два числа, разделённые пробелом: номер строки и номер позиции в строке.

Запишите в ответе два числа через пробел: сначала номер строки, в которой находится эта цепочка (если таких строк несколько, запишите минимальный из их номеров), затем количество светлых точек в самой длинной цепочке из светлых точек.

Вложения к задаче
Показать ответ и решение

Решение (Excel/LibreOffice)

Открываем программу Excel и загружаем в неё наш файл. Выделяем оба столбца - А и В, переходим в раздел "Данные"и выбираем функцию "Удалить дубликаты". Теперь сортируем данные столбца А и В по возрастанию.

В ячейку C1  помещаем число 1, в ячейку C2  вписываем формулу: =  ЕСЛИ(  И(A2 = A1; B2 = B1 +1);C1 + 1;1)  . Накладываем фильтр на столбец С и выбираем самое большое значение - 10. Это и будет являться максимальной длиной цепочки. Так как для значения 10 у нас нашлась одна строка, то она и будет искомой.

Решение (Python)

f = open(’267__1vi96.txt’)
n = int(f.readline())

maxim = 0
row = 0
max_row = 0 # максимальный ряд в файле
max_seat = 0 # максимальное место в ряду в файле
for i in range(n):
    x, y = [int(s) for s in f.readline().split()] # считывание текущей строки
    max_row = max(max_row,x) # вычисляем максимальный ряд
    max_seat = max(max_seat,y) # вычисляем максимальное место
f.close()
f = open(’267__1vi96.txt’)
n = int(f.readline())

a = [[0 for i in range(max_seat+1)] for j in range(max_row+1)] # матрица свободных и занятых мест

for i in range(n):
    x, y = [int(s) for s in f.readline().split()] # считывание текущей строки
    a[x][y] = 1 # отмечаем, что данный пиксель занят
for i in range(max_row):
    counter = 0 # счетчик подряд идущих занятых пикселей
    for j in range(max_seat):
        if a[i][j] == 1:
            counter += 1
        else:
            counter = 0
        if counter > maxim: # если счётчик больше максимума
            maxim = counter # перезаписываем максимум
            row = i # записываем ряд
print(row,maxim)

Ответ: 2786 10

Специальные программы

Все специальные программы

Программа
лояльности v2.0

Приглашай друзей в Школково и получай вознаграждение до 10%!

Крути рулетку
и выигрывай призы!

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

Бесплатное онлайн-обучение

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

Налоговые вычеты

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

Специальное предложение
для учителей

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

Вернём деньги за курс
за твою сотку на ЕГЭ

Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!

cyberpunkMouse
cyberpunkMouse
Рулетка
Вы можете получить скидку в рулетке!