Алгоритмы обработки

179 задач
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.
В некотором списке записана информация о годе рождения каждого из N человек. Определить наибольший порядковый номер самого младшего по возрасту человека (считая с 1). 

Входные данные
В первой строке задается число N - число человек (0<N<=50). Во второй строке задаются года рождения N человек (N чисел).

Выходные данные
Выведите наибольший номер самого младшего человека.
 
Пример
Входные данные Выходные данные
1 5
1904 1903 1905 1905 1903
4
Имеется информация о времени (в секундах) прохождения трассы 25 спортсменов, участвовавших в лыжной гонке. Выведите результат спортсмена-победителя гонки.

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

Выходные данные
Выведите на экран результат спортсмена-победителя гонки. Гарантируется, что победитель гонки единственный.
 
Пример
Входные данные Выходные данные
1 78 35 79 47 104 53 58 86 108 94 90 27 33 88 17 15 37 98 14 67 76 45 94 97 46  14

По данной перестановке π требуется найти π-1.

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

В первой строке  входных данных содержится число 0 < N <= 20000 – количество элементов в перестановке π. Во второй строке записана сама перестановка π.

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

Выведите π-1

 

Ввод Вывод
3
2 3 1
3 1 2

Разбор:
Вводим N и заводим массив от 1-го до N. Теперь начинаем считывать данную перестановку - хранить ее не обязательно, поэтому разумно будет вводить каждый элемент в одну и ту же переменную. Вводя i-й элемент кладем его порядковый номер (i) в ячейку массива с номером, равному этому числу, т.е. для каждого элемента данной перестановки сохраняем его место в этой перестановке. Теперь выводим полученный массив.

Реализуйте на одном из языков программирования алгоритм, представленный на схеме.
В первой строке ввода содержатся целое число N (1 ≤ N ≤ 100). Далее следует N строк, содержащих по одному целому числу в диапазоне от −1000 до 1000.
Вывести одно целое число – значение M после завершения работы алгоритма.



Ввод Вывод
4
2
3
-7
4
5

Хакер Василий получил доступ к классному журналу и хочет заменить все свои минимальные оценки на максимальные. Напишите программу, которая заменяет оценки Василия, но наоборот (все максимальные - на минимальные).
 
Входные данные
Дано количество оценок Василия (не больше 100), затем сами оценки.
 
Выходные данные
Требуется вывести исправленные оценки в том же порядке.

Ввод Вывод
5 1 3 3 3 4 1 3 3 3 1
8 5 4 2 2 4 2 2 5 2 4 2 2 4 2 2 2

Вы занимаетесь разработкой системы по продаже билетов на поезда. Несмотря на то, что поезда ходят по множеству различных маршрутов, вы будете работать только с одним из них. Маршрут рассматриваемого поезда состоит из n остановок: маршрут начинается в первой из них, а заканчивается в n-й, соответственно. Всего в поезде имеется m мест для пассажиров.

Эта система будет использоваться для продажи билетов пассажирам. При покупке билета пассажир указывает номер станции L, на которой он хочет сесть на поезд и номер станции R, на которой он хочет сойти с поезда. Если у одного пассажира есть билет до станции S, а другой хочет купить билет от станции S, то они друг другу не мешают: второй может занимать только что освободившееся место первого. Система должна сообщить пассажиру следующую информацию:

  • f, где f  число свободных мест мест между L-й и R-й станциями, если хотя бы одно такое место есть. В этом случае пассажир покупает один билет с L-й по R-ю станцию.
  • 0 если подходящих свободных мест нет. В этом случае пассажир билет не покупает.

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

В первой  находятся натуральные числа n (2 ≤ n ≤ 100), m (1 ≤ m ≤ 100) и k (1 ≤ k ≤ 100) — число станций в маршруте поезда, максимальное число пассажиров в поезде и число обращений обращений пассажиров к системе покупки билетов.

Следующие k строк содержат по два натуральных числа Li и Ri (1 ≤ Li < Ri ≤ n)  — начальная и конечная станции в i-м обращении к системе.

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

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

Пример входных и выходных данных

Ввод Вывод
5 2 4
1 4
1 3
2 5
3 5
2
1
0
1

Вы занимаетесь разработкой системы по продаже билетов на поезда. Несмотря на то, что поезда ходят по множеству различных маршрутов, вы будете работать только с одним из них. Маршрут рассматриваемого поезда состоит из n остановок: маршрут начинается в первой из них, а заканчивается в n-й, соответственно. Всего в поезде имеется m мест для пассажиров.

Эта система будет использоваться для продажи билетов пассажирам. При покупке билета пассажир указывает номер станции L, на которой он хочет сесть на поезд и номер станции R, на которой он хочет сойти с поезда. Если у одного пассажира есть билет до станции S, а другой хочет купить билет от станции S, то они друг другу не мешают: второй может занимать только что освободившееся место первого. Система должна сообщить пассажиру следующую информацию:

  • «YES», если в поезде есть свободные места. В этом случае пассажир покупает один билет с L-й по R-ю станцию.
  • «NO», если подходящих свободных мест нет. В этом случае пассажир билет не покупает.

 

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

В первой строке находятся натуральные числа n (2 ≤ n ≤ 100), m (1 ≤ m ≤ 100) и k (1 ≤ k ≤ 100) — число станций в маршруте поезда, максимальное число пассажиров в поезде и число обращений обращений пассажиров к системе покупки билетов.

Следующие k строк содержат по два натуральных числа Li и Ri (1 ≤ Li < Ri ≤ n)  — начальная и конечная станции в i-м обращении к системе.

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

Для каждого обращения к системе в своей строке выведите её ответ: YES или NO.

Пример входных и выходных данных

Ввод Вывод
5 2 4
1 4
1 3
2 5
3 5
YES
YES
NO
YES

 
Даны даты N событий, произошедших после 1930 года: Название, год, номер месяца и число. Составить программу, организующую ввод информации в структуру и сравнивающую два любых события по времени. Необходимо вывести название события, которое произошло позже.

Входные данные
В первой строке вводится число N - количество событий (\(1<=N<=100\)). Далее идут N записей в формате (через пробел):
<Событие> <день события> <месяц> <год>.
Далее идет строка с указанием названий двух событий, которые необходимо сравнить:
<событие1> <событие2>.

Событие - одно слово, день события - число от 1 до 31, месяц  - число от 1 до 12,  год - число от 1937 до 2016.

Выходные данные
Выведите название события, которое произошло позже и его дату в формате:
<событие> <день события> <Месяц> <Год>.
Если два события произошли в один день, то выведите их названия через пробел (без указания даты):
<событие1> <событие2>. 
 
Примечание
Название событий может повторяться, в таком случае необходимо брать событие, встретившееся в исходных данных позже.
 
Известна информация об N (0<N<=20) учениках класса: фамилия, имя, отчество  и дата рождения (день, месяц, год)
Определить структуру, описывающую информацию об учениках класса.
Вывести количество учеников в классе, у которых сегодня день рождения и их количество

Входные данные: 
В первой строке вводится число N - количество записей
Далее идут N записей в формате (через пробел): <Фамилия-слово без пробела> <Имя-слово без пробела> <Отчество-слово без пробела> <день рождения - число от 1 до 31> <Месяц рождения - число от 1 до 12> <Год рождения-число>
Далее идет строка с сегодняшней датой в формате  <день - число от 1 до 31> <Месяц - число от 1 до 12> <Год -число>

Выходные данные:
Необходимо вывести на экране в столбик информацию об учениках, у которых сегоня день рождения.
Формат вывода 
 <Фамилия-слово без пробела> <Имя-слово без пробела> <Отчество-слово без пробела>
Фамилии выводить в порядке следования исходных данных
Далее после списка учеников вывести одно число - количество учеников
Известна информация об N (0<N<=100) сотрудниках фирмы: фамилия, имя, отчество, адрес и дата поступления на работу (месяц, год)
Написать программу, организующую ввод исходных данных в структуру и вывести на экран фамилию, имя и адрес сотрудников, которые на сегодняшний день проработали в фирме не менее Z лет

Входные данные: 
В первой строке вводится число N - количество записей
Далее идут N записей в формате (через пробел): <Фамилия-слово без пробела> <Имя-слово без пробела> <Отчество-слово без пробела> <Адрес-слово без пробела> <Месяц поступления - число от 1 до 12> <Год поступления-число>
Далее идет строка с сегодняшней датой в формате  <Месяц - число от 1 до 12> <Год -число>
Далее идет значение Z (0<Z<=10) - количество проработанных лет

Выходные данные:
Необходимо вывести на экране в столбик информацию о сотрудниках, проработавших в фирме не менее Z лет.
Формат вывода 
 <Фамилия-слово без пробела> <Имя-слово без пробела> <Отчество-слово без пробела> <Адрес-слово без пробела> 
Фамилии выводить в порядке следования исходных данных
Известны максимальные скорости 20-ти моделей автомобилей. Все значения выражены в км/ч.
Написать программу, которая организовывает ввод исходных данных в структуру и выводит названия моделей автомобилей с самой маленькой и самой большой максимальной скоростью

Входные данные: 
20 строк в формате <Марка автомобиля> <Максимальная скорость>


Выходные данные:
Необходимо вывести через пробел названия двух моделей автомобилей, сначала автомобиль с наибольшей максимальной скоростью, затем через пробел автомобиль с наименьшей максимальной скоростью
Даны названия 26 городов и стран, в которыз они находятся. Среди них есть города, находящиеся в разных странах. 
Написать программу, которая организовывает ввод исходных данных в структуру и вывести названия городов  и их количество, находящихся в заданной стране.

Входные данные: 
в первой строке задается название страны
далее идут 26 строк в формате <Страна> <Город>


Выходные данные:
Необходимо вывести все города, которые находятся в стране, указанной в первой строке входных данных.
Каждый город выводить с новой строки
Сразу после списка городов вывести их количество (одно целое число)
Дана строка, представляющая собой адрес URL. Части URL разделяются знаком / или //
Необходимо разобрать строку URL на части и вывести каждую часть с новой строки.

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

Выходные данные
Необходимо вывести каждую часть URL адреса с новой строки.
 
Примеры
Входные данные Выходные данные
1 C:/Photo/2013/Pokhod/vasya.jpg C:
Photo
2013
Pokhod
vasya.jpg
2 http://chelyabinsk.74.ru/text/newsline/258041618673664.html http:
chelyabinsk.74.ru
text
newsline
258041618673664.html

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


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

Выходные данные: необходимо вывести самое длинное слово и количество символов в нем. Если таких слов несколько, то вывести первое из них.
 
Примеры
Входные данные Выходные данные
1 Vasja      poshel           guljat poshel 6
Герцог Циклонский, обладая безграничным могуществом, что отражено в его девизе "Все могу!", ежегодно проводит конкурс среди приглашенных на исполнение самого заветного желания.
Отбор проводится следующим образом: все претенденты рассаживаются на пронумерованных стульях (нумерация стульев начинается с 1) вокруг Большого Круглого стола, после чего посредством Константы счета начинается отсчет по часовой стрелке.
Претендент, на которого падает Константы счета, обязан освободить место, отсчет продолжается до тех пор, пока не останется два человека. 
Требуется при известном числе гостей N и Константы счета С определить номера стульев, которые нужно занять, чтобы попасть в число этих двух "счастливчиков".

Входные данные
В первой строке вводится число N (\(1<=N<=100\))  - количество приглашенных претендентов. Во второй строке вводится Константы счета (\(С<=100\)).

Выходные данные
Необходимо вывести через пробел два числа - номера стульев "счастливчиков".
 
Примеры
Входные данные Выходные данные
1 5
3
2 4
На пронумерованных N стульях за круглым столом в зале заседаний сидят толстяки, вес каждого известен. Каждый час они пересаживаются по кругу вправо на один стул. Напишите программу, которая определяет какой из толстяков будет сидеть на каждом стуле через R часов. 

Входные данные
В первой строке вводится значение N - натуральное число (\(N<=100\)). Во второй строке, вводится N чисел - вес толстяков (от 90 до 150). В третьей строке вводится натуральное число R (\(0<=R<=100\)).

Выходные данные
Вывести в первой строке исходное положение толстяков (их вес, начиная с сидящего на первом стуле):
before: вес толстяков 
Во второй строке вывести положение толстяков через R часов:
after: вес толстяков 
 
Примеры
Входные данные Выходные данные
1
5
98 127 139 141 107 
3
before: 98 127 139 141 107 
after: 139 141 107 98 127 
На вход подается одна строка текста (не больше 255 символов).
Нужно вывести эту же строку, удалив все парные пробелы (то есть, если где-то в строке идет подряд 2 или более пробелов, то в этом месте нужно оставить только один из них).
 
Примеры
Входные данные Выходные данные
1    My    name is    Vasya...  My name is Vasya...
В фирме, выпускающей компьютерные комплектующие, все изделия получают последовательные номера от 1 до N. Каждое изделие после его изготовления поступает в отдел контроля качества, где оно проверяется, и либо уходит в продажу, либо заносится в список бракованных изделий и списывается. К сожалению, список бракованных изделий иногда оказывается чересчур длинным. Тогда для его сокращения подряд идущие числа заменяются интервалом: через тире указываются номера первого и последнего изделия интервала.
Например, вместо 
1,3,4,5,6,7,8,10,12,16,17,20,21,22,23,24
записывается
1,3-8,10,12,16-17,20-24
 
Напишите программу, которая по полному списку номеров бракованных изделий выдаст этот список в сокращенном виде.
 
Входные данные
В первой строке вводится сначала число N - общее количество изделий, затем число M - количество изделий, оказавшихся бракованными. Во второй строке вводятся в возрастающем порядке номера бракованных изделий. 
 
Выходные данные
Выведите в одной строке список номеров бракованных изделий в сокращенном виде. Интервалы должны разделяться запятой. В строке не должно быть пробелов.
 
Ограничения
1<=M<=N<=1000000.
 
Примеры
Входные данные Выходные данные
1
10 5 
1 3 5 7 9
1,3,5,7,9
2
40 16
1 3 4 5 6 7 8 10 12 16 17 20 21 22 23 24
1,3-8,10,12,16-17,20-24
3
11 11
1 2 3 4 5 6 7 8 9 10 11
1-11
4
10000 1 
5
5
Даны два массива чисел. Требуется вывести те элементы первого массива (в том порядке, в каком они идут в первом массиве), которых нет во втором массиве.
 
Входные данные
В первой строке ввода записано число N - количество элементов в первом массиве. Во второй строке  - N чисел (элементы массива). В третьей строке записано число M - количество элементов во втором массиве. В четвертой строке  - элементы второго массива.
Количество элементов каждого массива не превышает 100. Сами элементы по модулю не превышают 1000. Все числа целые.
 
Выходные данные
Выведите те элементы первого массива, которых нет во втором.Элементы необходимо вывести в том порядке, в каком они идут в первом массиве.
 
Примеры
Входные данные Выходные данные
1
7
3 1 3 4 2 4 12
6
4 15 43 1 15 1
3 3 2 12
 
Зл 9.25#22041
Дано слово информатика. Путем "вырезок" и "склеек" его букв получить слова форма и тик. 
Результирующие слова выводить в столбик.

Пример входных и выходных данных
№ теста Входные данные Выходные данные
1 информатика форма
тик
Поделиться
Класснуть