Типы данных

184 задачивместе с подтемами
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: ✓ успешные, ✗ неуспешные.

Одинаковые соседи

Дана строка s. Рассматриваются все подряд идущие фрагменты длины 2 (в том числе пересекающиеся). Найдите количество фрагментов, для которых выполнено условие: два символа одинаковы.

Ввод: одна строка без пробелов. Длина строки от 1 до 2500 символов. Строка содержит только символы A, B, C, D.

Вывод: одно целое число.

Пересекающиеся фрагменты учитываются отдельно.

Разные соседние символы

Дана строка s. Рассматриваются все подряд идущие фрагменты длины 2 (в том числе пересекающиеся). Найдите количество фрагментов, для которых выполнено условие: два символа различны.

Ввод: одна строка без пробелов. Длина строки от 1 до 2500 символов. Строка содержит только символы A, B, C.

Вывод: одно целое число.

Пересекающиеся фрагменты учитываются отдельно.

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

На вход подаётся число \(N\), затем \(N\) слов (каждое с новой строки, все строчные).

Программа должна:

  • Разбить слова на группы анаграмм
  • Вывести каждую группу, в которой больше одного слова
  • Группы отсортировать по убыванию размера. При равном размере — по алфавиту первого слова
  • Слова внутри группы — в алфавитном порядке, через пробел

Формат входных данных

Первая строка — целое число \(N\) (\(1 \le N \le 30\)).

Следующие \(N\) строк — по одному слову (строчные русские буквы).

Формат выходных данных

Группы анаграмм (только те, где больше одного слова). Слова в группе через пробел в алфавитном порядке. Каждая группа на отдельной строке.

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

На вход подаётся число \(N\), затем \(N\) слов (каждое с новой строки, все строчные).

Программа должна:

  • Разбить слова на группы анаграмм
  • Вывести каждую группу, в которой больше одного слова
  • Группы отсортировать по убыванию размера. При равном размере — по алфавиту первого слова
  • Слова внутри группы — в алфавитном порядке, через пробел

Формат входных данных

Первая строка — целое число \(N\) (\(1 \le N \le 30\)).

Следующие \(N\) строк — по одному слову (строчные русские буквы).

Формат выходных данных

Группы анаграмм (только те, где больше одного слова). Слова в группе через пробел в алфавитном порядке. Каждая группа на отдельной строке.

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

На вход подаётся число \(N\), затем \(N\) слов (каждое с новой строки, все строчные).

Программа должна:

  • Разбить слова на группы анаграмм
  • Вывести каждую группу, в которой больше одного слова
  • Группы отсортировать по убыванию размера. При равном размере — по алфавиту первого слова
  • Слова внутри группы — в алфавитном порядке, через пробел

Формат входных данных

Первая строка — целое число \(N\) (\(1 \le N \le 30\)).

Следующие \(N\) строк — по одному слову (строчные русские буквы).

Формат выходных данных

Группы анаграмм (только те, где больше одного слова). Слова в группе через пробел в алфавитном порядке. Каждая группа на отдельной строке.

Примечание

Подсказка: два слова — анаграммы, если при сортировке их букв получается одинаковый результат. Например, sorted("кот") и sorted("ток") оба дают ['к', 'о', 'т'].

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


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

Заданы сначала количество учащихся n, затем n строк, каждая из которых содержит фамилию, имя и три числа (оценки по трем предметам: математике, физике, информатике). Данные в строке разделены одним пробелом. Оценки принимают значение от 1 до 5.


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

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

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

Входные данные
Заданы сначала количество учащихся n, затем n строк, каждая из которых содержит фамилию, имя и три числа (оценки по трем предметам: математике, физике, информатике). Данные в строке разделены одним пробелом. Оценки принимают значение от 1 до 5.

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

Примеры
№ Входные данные Выходные данные
1 2
Markov Valeriy 1 1 1
Ivanov Ivan 2 2 2
Ivanov Ivan
Markov Valeriy
2 3
Markov Valeriy 5 5 5
Sergey Petrov 1 1 1
Petrov Petr 3 3 3
Markov Valeriy
Petrov Petr
Sergey Petrov
Выведите фамилии и имена учащихся, не имеющих троек (а также двоек и колов).

Входные данные
Заданы сначала количество учащихся n, затем n строк, каждая из которых содержит фамилию, имя и три числа (оценки по трем предметам: математике, физике, информатике). Данные в строке разделены одним пробелом. Оценки принимают значение от 1 до 5.

Выходные данные
Необходимо вывести пары фамилия-имя по одной на строке, разделяя фамилию и имя одним пробелом. Выводить оценки не нужно. Порядок вывода должен быть таким же, как в исходных данных.
 
Примеры
№ Входные данные Выходные данные
1 3
Babat Anna 5 4 3
Belova Galina 4 3 5
Moroz Yaroslav 3 5 4
 

Контрольная состоит из четырёх обязательных задач с номерами от 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 включительно.

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

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

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