Язык программирования

633 задачивместе с подтемами
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: ✓ успешные, ✗ неуспешные.
Программистка Полиночка стала изучать оператор ввода, чтобы ее программы стали более универсальными и работали на разных наборах значений. Ей даются значения двух переменных: первая строка входного файла содержит число детей в классе, вторая -  количество девочек в классе. Ей нужно вывести на экран количество мальчиков. То есть если, например, количество детей в классе 25, из них 10 девочек, то Полиночка должны вывести, что в классе 15 мальчиков.

Пример.
Input Output
19
10
9 
Вовочка ломает систему безопасности Пентагона. Для этого ему понадобилось узнать, какие символы в секретных зашифрованных посланиях употребляются чаще других. Для удобства изучения Вовочка хочет получить графическое представление встречаемости символов. Поэтому он хочет построить гистограмму количества символов в сообщении. Гистограмма – это график, в котором каждому символу, встречающемуся в сообщении хотя бы один раз, соответствует столбик, высота которого пропорциональна количеству этих символов в сообщении.

Входные данные
Входной файл содержит зашифрованный текст сообщения. Он содержит строчные и прописные латинские буквы, цифры, знаки препинания («.», «!», «?», «:», «-», «,», «;», «(», «)»), пробелы и переводы строк. Размер входного файла не превышает 104 байт. Текст содержит хотя бы один непробельный символ. Все строки входного файла не длиннее 200 символов.

Выходные данные
Для каждого символа c кроме пробелов и переводов строк выведите столбик из символов «#», количество которых должно быть равно количеству символов c в данном тексте. Под каждым столбиком напишите символ, соответствующий ему. Отформатируйте гистограмму так, чтобы нижние концы столбиков были на одной строке, первая строка и первый столбец были непустыми. Не отделяйте столбики друг от друга. Отсортируйте столбики в порядке увеличения кодов символов.

Пример
Входные данные Выходные данные
Hello, world!
     #   
     ##  
#########
!,Hdelorw
Twas brillig, and the slithy toves
Did gyre and gimble in the wabe;
All mimsy were the borogoves,
And the mome raths outgrabe.
         #              
         #              
         #              
         #              
         #              
         #         #    
         #  #      #    
      #  # ###  ####    
      ## ###### ####    
      ##############    
      ##############  ##
#  #  ############## ###
########################
,.;ADTabdeghilmnorstuvwy
В лаборатории биоинформатики ученые проводят эксперименты по распространению искусственно созданных вирусов. Для эксперимента используется специальная лабораторная установка, представляющая собой таблицу из n × m ячеек. В каждую ячейку помещается живая клетка. Ученые заражают вирусом некоторые клетки, всего исходно заражается не более 8 клеток.
Каждую секунду среди незараженных клеток, имеющих зараженную клетку в соседней по стороне ячейке, ровно одна клетка заражается вирусом.
Ученые заинтересовались, какие конфигурации зараженных клеток могут получиться через t секунд. Для начала они хотят посчитать число таких конфигураций. Помогите им это сделать.

Формат входных данных
В первой строке входного файла находятся целые числа n, m и t (1 ≤ n, m ≤ 100, 1 ≤ t ≤ 6) — размеры таблицы и количество секунд. Каждая из следющих n строк содержит m символов. Символ «.» означает, что в изначальной конфигурации клетка не заражена, а символ «*» — что заражена. Количество «*» в таблице не превышает 8. Гарантируется, что незараженных клеток в исходной конфигурации не меньше t.

Формат выходных данных
Выведите количество различных возможных конфигураций таблицы после t секунд.
 
Ввод Вывод
2 2 1
*.
..
2
2 2 2
*.
..
3
2 2 3
*.
..
1
Организаторы Всероссийской командной олимпиады школьников по программированию всегда ответственно относятся ко всем этапам проведения соревнования. Недавно организаторам были доставлены футболки для участников олимпиады. Они были сложены в ящик, который является кубом со стороной в один метр. Ящик был поставлен в углу комнаты прямоугольной формы размером m × n метров. Чтобы никто случайно не забрал ящик, на его верхней грани красной краской написали слово «ВКОШП».

Сегодня организаторам вдруг понадобилось переставить этот ящик в противоположный угол комнаты. Но, к сожалению, ящик оказался настолько тяжелым, что никто не мог сдвинуть его с места. Выяснилось, что все, что можно сделать с ящиком — перекатить его через ребро нижней грани. Соответствующее ребро при этом остается на том же месте, а нижней становится другая смежная с этим ребром грань.

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

Но когда они уже собрались начать транспортировку, обнаружилась еще одна проблема. Красная надпись «ВКОШП» каждый раз, касаясь пола, оставляет на нем следы. Поэтому среди всех вариантов транспортировки, минимизирующих количество перекатываний, организаторы решили выбрать тот, при котором надпись «ВКОШП» окажется на нижней грани куба минимальное число раз.

Помогите организаторам — посчитайте, сколько раз надпись «ВКОШП» коснется пола при оптимальном перекатывании куба с футболками.

Формат входных данных
В первой строке задано два числа n и m (1 ≤ n, m ≤ 109 ) — размеры комнаты в метрах.

Формат выходных данных
Выведите одно число — сколько раз надпись «ВКОШП» окажется на нижней грани при оптимальном перемещении ящика.
 
Ввод Вывод
1 2 0
3 3 1


Пояснение

В первом примере необходимо одно перекатывание, надпись, которая исходно была на верхней грани, окажется на боковой грани, но пола не коснется.
Во втором примере необходимо четыре перекатывания. В любом случае хотя бы один раз надпись «ВКОШП» коснется пола. Один из способов сделать перекатывания так, чтобы это произошло один раз, следующий. Сначала два раза перекатим куб в одном направлении (он окажется в соседнем углу комнаты). Сейчас надпись «ВКОШП» находится на нижней грани и касается пола. Затем перекатим куб еще два раза в перпендикулярном направлении. Теперь куб находится в требуемом положении.
У Фермера Джона круглый амбар. Амбар состоит из кольца из n комнат, пронумерованных 1…n по периметру (3≤n≤1,000). Каждая комната имеет двери в две соседние комнаты и одну дверь во внешний мир.
ФД хочет разместить ровно ri коров в комнате i (1≤ri≤1,000,000). Он планирует открыть k внешних дверей (1≤k≤7), через которые коровы будут входить в амбар. Каждая корова затем идёт по часовой стрелке, пока не добредёт до нужной комнаты. ФД хочет открыть двери так, чтобы все коровы вместе прошли как можно меньшее расстояние. Коровы предварительно могут собраться как им выгоднее перед этими незакрытыми дверями (эти перемещения не входят в общее расстояние, учитываемое в задаче). Определите минимальное суммарное расстояние, которое придётся пройти коровам, если ФД наилучшим образом выберет какие k открыть.
 
ФОРМАТ ВВОДА:
Первая строка ввода содержит n и k. Последующие n строк содержат r1…rn.

ФОРМАТ ВВОДА:
Выведите минимальное суммарное расстояние пройденное коровами.
 
Ввод Вывод
6 2
2
5
4
2
6
2
14


ФД может открыть двери 2 и 5. 11 коров войдут в двери 2 и пройдут суммарное расстояние 8 чтобы попасть в комнаты 2,3,4. 10 коров войдут в дверь 5 и пройдут общее расстояние 6, чтобы попасть в комнаты 5,6,1.



 
Мобильный интернет прочно вошел в нашу жизнь. Операторы связи предлагают различные способы оплаты мобильного интернета и, зная свои потребности, можно выбрать наиболее дешевый
из подходящих тарифов.

Рассмотрим следующие тарифные планы:
1. Единовременно каждый месяц платится 350Р за 3000 мегабайт. Также можно докупать дополнительные пакеты по 300 мегабайт за 30Р каждый, которые действуют до конца месяца.
2. 500 мегабайт в день за 29Р в сутки. За дни, в которые интернет не используется (скачано 0 мегабайт), плата не взимается.
3. Оплата за использованный трафик  1, 2Р за 1 мегабайт.
4. Безлимитный интернет на месяц за 790Р.
5. Лимитированный тариф  16000 мегабайт на месяц за 590Р.
 
По известному количеству трафика в каждый из 31 дней одного месяца определите, сколько денег уйдет на оплату интернета при использовании каждого из тарифных планов или сообщите, что использование тарифа невозможно (недостаточно трафика). 

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

Выходные данные
Выведите пять чисел в отдельных строках  стоимость трафика за месяц при использовании
соответствующего тарифа или −1, если требуемое использование интернета недопустимо в рамках
соответствующего тарифа (например, суммарный или суточный трафик превосходит ограничение
тарифа).
Стоимость требуется вывести в формате <рубли> <копейки>.

Ввод Вывод
3001 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 380 0
-1
3601 20
790 0
590 0

Контрольная состоит из четырёх обязательных задач с номерами от 1 до 4. В журнале записаны идентификатор ученика, номер задачи и балл за отправленное решение. Одну задачу можно отправлять несколько раз.

За каждую задачу учитывается лучший результат ученика среди всех его попыток по этой задаче. Если ученик не отправлял решение некоторой задачи, его результат по ней равен нулю.

Контрольная считается сданной, если за каждую из четырёх задач ученик получил не менее 50 зачётных баллов.

Определите количество сдавших контрольную учеников и идентификатор ученика с наибольшей суммой зачётных баллов среди сдавших. При равенстве сумм выберите меньший идентификатор. Учитывайте учеников, чьи идентификаторы встречаются в журнале.

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

В первой строке дано целое число N — количество записей (1 ≤ N ≤ 100000).

В каждой из следующих N строк даны три целых числа: идентификатор ученика, номер задачи и балл за попытку. Идентификатор находится в диапазоне от 1 до 1000000000 включительно, номер задачи — от 1 до 4, балл — от 0 до 100. Записи перечислены в порядке отправки решений; он может быть любым относительно номеров учеников и задач.

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

Выведите через пробел количество сдавших контрольную и идентификатор выбранного ученика. Если контрольную не сдал никто, выведите 0 0.

В журнале соревнования каждая запись содержит идентификатор участника, номер задачи и балл за отправленное решение. Один участник может отправить несколько решений одной задачи.

За каждую задачу участнику засчитывается только наибольший балл среди всех его попыток по этой задаче. Итоговый результат участника равен сумме зачётных баллов по всем задачам, которые он отправлял.

Определите победителя: участника с наибольшим итоговым результатом. При равенстве результатов побеждает участник с меньшим идентификатором. В соревновании участвуют все, чьи идентификаторы встречаются в журнале, в том числе участники с нулевым итоговым результатом.

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

В первой строке дано целое число N — количество записей (1 ≤ N ≤ 100000).

В каждой из следующих N строк даны три целых числа: идентификатор участника, номер задачи и балл за попытку. Идентификаторы участников и номера задач находятся в диапазоне от 1 до 1000000000 включительно, баллы — от 0 до 100 включительно. Записи перечислены в порядке отправки решений; он может быть любым относительно номеров участников и задач.

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

Выведите через пробел идентификатор победителя и его итоговый балл.

Датчики передают измерения температуры. Каждая запись содержит номер датчика и целую температуру. Один датчик может передать несколько измерений.

Датчик считается подходящим, если одновременно выполнены два условия:

  • он передал не менее K измерений;
  • разность между наибольшей и наименьшей переданными им температурами не превышает D.

Определите количество подходящих датчиков и наименьший номер среди них. Учитывайте только датчики, представленные в журнале.

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

В первой строке даны три целых числа N, K и D: количество записей, необходимое количество измерений и допустимая разность температур. Ограничения: 1 ≤ N ≤ 100000, 1 ≤ K ≤ 100000, 0 ≤ D ≤ 200.

В каждой из следующих N строк даны номер датчика и температура. Номер датчика — целое число от 1 до 1000000000 включительно, температура — целое число от −100 до 100 включительно. Записи перечислены в произвольном порядке.

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

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

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

Выручка по одной записи равна цене товара, умноженной на количество проданных единиц. Выручка магазина равна сумме выручек по всем его записям.

Определите магазин с наибольшей выручкой. Если таких магазинов несколько, выберите магазин с меньшим номером.

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

Оба набора данных поступают последовательно через стандартный ввод.

Сначала дано целое число N — количество товаров в справочнике (1 ≤ N ≤ 100000). Следующие N строк содержат по два целых числа: код товара и цену одной единицы в рублях. Все коды в справочнике различны.

Затем дано целое число M — количество записей в журнале продаж (1 ≤ M ≤ 100000). Следующие M строк содержат по три целых числа: номер магазина, код товара и количество проданных единиц.

Все номера магазинов, коды товаров, цены и количества находятся в диапазоне от 1 до 1000000000 включительно. Каждый товар из журнала присутствует в справочнике. Записи в каждом наборе перечислены в произвольном порядке.

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

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

В журнале продаж каждая запись содержит номер магазина, код товара и количество проданных единиц. Один товар может продаваться в нескольких магазинах. Для одной пары «магазин — товар» в журнале может быть несколько записей.

Найдите пару «магазин — товар» с наибольшим суммарным количеством проданных единиц. Если таких пар несколько, выберите пару с меньшим номером магазина. Если и номер магазина совпадает, выберите меньший код товара.

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

В первой строке дано целое число N — количество записей (1 ≤ N ≤ 100000).

В каждой из следующих N строк записаны три целых числа: номер магазина, код товара и количество проданных единиц. Каждое из этих чисел находится в диапазоне от 1 до 1000000000 включительно. Записи перечислены в произвольном порядке.

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

Выведите через пробел три целых числа: выбранный номер магазина, код товара и суммарное количество проданных единиц для этой пары.

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

  • два различных числа встречаются ровно по два раза, а ещё два различных числа — ровно по одному разу;
  • сумма четырёх элементов с повторяющимися значениями больше суммы двух элементов с неповторяющимися значениями.

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

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

В первой строке дано целое число N — количество строк таблицы (1 ≤ N ≤ 100 000).

Каждая из следующих N строк содержит ровно шесть целых чисел от 1 до 109 включительно, разделённых пробелами.

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

Выведите одно целое число — количество строк, удовлетворяющих обоим условиям.

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

Определите букву, которая была учтена наибольшее количество раз, и это количество. При равенстве выберите букву, которая стоит раньше в латинском алфавите.

Тройки могут пересекаться: каждое возможное положение начала тройки рассматривается отдельно. Третья буква также может совпадать с первыми двумя. Гарантируется, что хотя бы одна подходящая тройка существует.

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

В единственной строке дана строка длиной от 3 до 1 000 000 символов. Все символы — заглавные латинские буквы от A до Z.

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

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

Участники выполняют несколько попыток. Для каждой попытки известны идентификатор участника и набранный им балл. В зачёт участнику идёт только лучший из всех его результатов.

Определите количество участников, чей зачётный результат не меньше заданного порога P. Учитываются только участники, у которых есть хотя бы одна запись во входных данных.

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

В первой строке даны два целых числа: количество попыток N и порог P (1 ≤ N ≤ 100 000, 0 ≤ P ≤ 100).

В каждой из следующих N строк записаны идентификатор участника и балл за одну попытку. Идентификатор — целое число от 1 до 109, балл — целое число от 0 до 100. Записи могут идти в любом порядке.

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

Выведите одно целое число — количество участников с зачётным результатом не меньше P.

В журнале сервера для каждого запроса записаны идентификатор клиента и объём переданных им данных в килобайтах. Один клиент может выполнить несколько запросов.

Определите клиента, который передал наибольший суммарный объём данных за все свои запросы. Если таких клиентов несколько, выберите клиента с наименьшим идентификатором.

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

В первой строке дано целое число N — количество записей журнала (1 ≤ N ≤ 100 000).

В каждой из следующих N строк записаны два целых числа: идентификатор клиента и объём данных одного запроса. Оба числа находятся в диапазоне от 1 до 109 включительно. Записи могут идти в любом порядке.

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

Выведите через пробел идентификатор выбранного клиента и суммарный объём переданных им данных в килобайтах.

Дана последовательность целых чисел. Найдите число, которое встречается в ней чаще всего, и количество его появлений.

Если наибольшая частота одинакова у нескольких чисел, выберите наименьшее из этих чисел.

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

В первой строке дано целое число N — количество элементов последовательности (1 ≤ N ≤ 100 000).

Во второй строке записаны N целых чисел через пробел. Каждое число находится в диапазоне от −109 до 109 включительно.

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

Выведите два целых числа через пробел: выбранное число и количество его появлений.

Дана последовательность целых чисел. Для каждого различного числа определите, сколько раз оно встречается в последовательности.

Выведите каждое различное число вместе с количеством его появлений. Числа в ответе должны идти по возрастанию.

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

В первой строке дано целое число N — количество элементов последовательности (1 ≤ N ≤ 100 000).

Во второй строке записаны N целых чисел через пробел. Каждое число находится в диапазоне от −109 до 109 включительно.

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

Для каждого различного числа выведите отдельную строку: само число и через пробел количество его появлений. Строки расположите по возрастанию чисел.

Датчики передают измерения температуры. Каждая запись содержит номер датчика и его показание. Записи поступают в том порядке, в котором их нужно обработать; один датчик может встретиться несколько раз.

Для каждого датчика сохраните только последнее поступившее показание. Выведите результаты по возрастанию номеров датчиков.

Скопируйте подготовленный код и допишите сохранение показания. Последний цикл уже выводит готовый результат в нужном порядке; сортировка используется только для вывода.

n = int(input())
last = {}
for _ in range(n):
    sensor, temperature = map(int, input().split())
    # Сохраните последнее показание этого датчика

for sensor, temperature in sorted(last.items()):
    print(sensor, temperature)
Входные данные

Первая строка содержит число записей N (1 ≤ N ≤ 100 000). В следующих N строках записаны два целых числа через пробел: номер датчика от 1 до 109 и температура от −100 до 100 включительно.

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

Для каждого встретившегося датчика выведите в отдельной строке его номер и последнее показание через пробел. Строки должны идти по возрастанию числовых номеров датчиков.

В справочнике хранятся коды товаров и их цены. Программа получает запросы о цене, но некоторые товары могут отсутствовать в справочнике.

Для каждого запроса выведите цену известного товара или слово НЕТ, если указанного кода нет. Цена 0 допустима и означает, что товар бесплатный.

Скопируйте подготовленный код и допишите обработку запроса внутри последнего цикла.

n = int(input())
prices = {}
for _ in range(n):
    product, price = input().split()
    prices[product] = int(price)

m = int(input())
for _ in range(m):
    product = input()
    # Выведите цену известного товара или слово НЕТ
Входные данные

Первая строка содержит целое число N — количество товаров (1 ≤ N ≤ 10 000). Следующие N строк содержат код товара и целую цену через пробел. Коды различны.

Код — строка длиной от 1 до 20 символов, состоящая из латинских букв и цифр. Регистр букв имеет значение; ведущие нули являются частью кода. Цена находится в диапазоне от 0 до 109 рублей включительно.

Затем вводится целое число M — количество запросов (1 ≤ M ≤ 10 000). В каждой из следующих M строк находится один код товара.

Коды в запросах удовлетворяют тем же ограничениям, но могут отсутствовать в справочнике.

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

Для каждого запроса выведите в отдельной строке цену либо слово НЕТ прописными русскими буквами. Ответы должны идти в порядке запросов.

Поделиться
Класснуть