Создайте переменную типа pair <int, int>
.
Считайте два числа, запишите их в эту переменную. Затем выведите
оба поля этой переменной через пробел.
Программа должна содержать только одну переменную типа
pair <int, int>
и никаких других переменных.
Ввод | Вывод |
---|---|
1 2 |
1 2 |
Создайте две переменные типа pair <int, string>
.
Cчитайте их значения, обменяйте значения двух переменных при помощи
функции swap
, выведите оба поля обеих переменных.
Программа должна содержать только две переменные типа
pair <int, string>
и никаких других переменных.
Ввод | Вывод |
---|---|
1 one |
2 two |
Программа получает на вход \(N\) пар целых чисел (сначала записано число \(N\),
затем в \(N\) строках по два числа). Создайте вектор пар, считайте в него данные числа,
упорядочите при помощи функции sort
и выведите результат.
Ввод | Вывод |
---|---|
3 |
1 1 |
Однажды, неловкая секретарша перепутала личные дела учащихся. Теперь их снова необходимо упорядочить сначала по классам, а внутри класса по фамилиям.
В первой строке входных данных записано число \(N\) (\(1 \le N \le 10^5\)) – количество личных дел. Далее записано \(N\) строк, каждая из которых состоит из фамилии учащегося (строка без пробелов) и номера класса (целое число от 1 до 11).
Нужно вывести список всех учащихся, сначала выводя номер класса, затем — фамилию учащегося. Список должен быть отсортирован по классу, а затем по фамилии.
Ввод | Вывод |
---|---|
3 |
9 Petrov |
В олимпиаде участвовало N человек. Каждый получил определенное количество баллов, при этом оказалось, что у всех участников — разное число баллов.
Упорядочите список участников олимпиады в порядке убывания набранных баллов.
Программа получает на вход число участников олимпиады N. Далее идет N строк, в каждой строке записана фамилия участника, затем, через пробел, набранное им количество баллов.
Выведите список участников (только фамилии) в порядке убывания набранных баллов.
Ввод | Вывод |
---|---|
3 |
Sidorov |
Даны \(N\) натуральных чисел. Упорядочите их в порядке возрастания последней цифры числа, а при равенстве последней цифры — по возрастанию самих чисел. Упорядоченные числа выведите через пробел.
Ввод | Вывод |
---|---|
3 |
321 123 333 |
Даны \(N\) строк. Упорядочите их в порядке возрастания длины строки, а при равной длине — в лексикографическом порядке.
Ввод | Вывод |
---|---|
3 |
bc |
Мальчик Антон решает вступительную работу в летний математический лагерь. В ней \(N\) заданий, которые можно выполнять в произвольном порядке. Разные задачи требуют разного времени для решения в зависимости от их сложности. Пусть сложность \(i\)-го задания равна \(T_i\). Если задание с номером \(i\) выполнять \(j\)-м по счету, Антону потребуется \(T_i\times j\) времени: чем больше думаешь, тем больше устаешь. Например, если начать с первой задачи, а затем выполнить вторую, то потребуется \(T_1\times 1 + T_2\times2\) времени, а если выполнить сначала вторую задачу, а затем первую — то \(T_2\times 1 + T_1\times2\) . Подскажите Антону, в каком порядке нужно решать задачи, чтобы на выполнение всей работы ушло как можно меньше времени.
Первая строка входных данных содержит число \(N\) — количество задач. Во второй строке записано \(N\) целых чисел \(T_1\), \(T_2\), ..., \(T_N\) через пробел.
Требуется вывести номера задач в том порядке, в котором их нужно решать, чтобы уложиться в минимальное время. Если решений несколько, нужно вывести любое из них.
Ввод | Вывод |
---|---|
2 |
2 1 |
Одна очень предприимчивая и симпатичная девушка решила собрать себе денег на роскошную жизнь. У нее есть \(N\) поклонников, про каждого из них она узнала размер его состояния \(P_i\). Девушка намерена выйти замуж и сразу же развестись с некоторыми из своих поклонников так, чтобы в результате получить максимально возможное состояние. По законам страны в случае развода каждый из супругов получает ровно половину их общего состояния.
Первая строка входных данных содержит число \(N\le10^5\)— количество поклонников. Вторая строка содержит \(N\) натуральных чисел \(X_1\), ..., \(X_N\) — размеры состояний поклонников. Третья строка содержит одно число \(Y\) — состояние девушки.
Программа должна вывести число \(K\) — количество раз, сколько девушка выйдет замуж. В следующей строке необходимо вывести \(K\) чисел от 1 до \(N\) каждое — номера поклонников в том порядке, в котором девушка будет выходить за них замуж. Разумеется, ни один из поклонников не согласится повторно жениться на подобной особе.
Ввод | Вывод |
---|---|
2 |
2 |
3 |
3 |
1 |
0 |
Ваш танк находится на краю поля боя, будем считать, что он стоит в центре координат. Поле боя простирается на восток и на нем находятся танки противников, которые будем считать точками с целочисленными координатами. Вы можете стрелять по прямой, и ваши бронебойные заряды уничтожают все танки противников, находящихся на линии выстрела. Определите, какое наименьшее число выстрелов необходимо для уничтожения всех танков противника.
Первая строка входных данных содержит количество танков \(N\le 10^5\). Следующие \(N\) строк содержат по два числа \(x_i\) и \(y_i\) — координаты танков (\(0\lt x_i\le 10^3\), \(-10^3\le y_i\le 10^3\)).
Программа должна вывести одно число — необходимое количество выстрелов \(K\). В следующей строке необходимо вывести \(K\) чисел от 1 до \(N\) — номера танков противника, по котором необходимо произвести выстрелы.
Ввод | Вывод |
---|---|
4 |
3 |
После затянувшегося совещания директор фирмы решил заказать такси, чтобы развезти сотрудников по домам. Он заказал \(N\) машин —ровно столько, сколь у него сотрудников. Однако когда они подъехали, оказалось, что у каждого водителя такси свой тариф за 1 километр.
Директор знает, какому сотруднику сколько километров от работы до дома (к сожалению, все сотрудники живут в разных направлениях, поэтому нельзя отправить двух сотрудников на одной машине). Теперь директор хочет определить, сколько придется заплатить за перевозку всех сотрудников. Естественно, директор хочет заплатить как можно меньшую сумму.
В первой строке записано число сотрудников \(N\le10^5\), во второй строке записаны \(N\) чисел через пробел, задающих расстояния в километрах от работы до домов сотрудников компании. В третьей строке записаны \(N\) чисел — тарифы за проезд одного километра в такси.
В первой строке программа должна вывести минимальную стоимость доставки всех сотрудников.
Во второй строке программа должна вывести \(N\) чисел. Первое число — номер такси, в которое должен сесть первый сотрудник, второе число — номер такси, в которое должен сесть второй и т.д. Если вариантов рассадки сотрудников, при которых затраты минимальны, несколько, выведите любой из них.
Ввод | Вывод |
---|---|
3 |
1700 |
5 |
243 |
Системный администратор вспомнил, что давно не делал архива пользовательских файлов. Однако, объем диска, куда он может поместить архив, может быть меньше чем суммарный объем архивируемых файлов.
Известно, какой объем занимают файлы каждого пользователя.
Напишите программу, которая по заданной информации о пользователях и свободному объему на архивном диске определит максимальное число пользователей, чьи данные можно поместить в архив.
Программа получает на вход в одной строке число \(S\) размер свободного места на диске, и число \(N\) — количество пользователей. Следующие \(N\) строк содержат информацию о пользователях, в каждой строке записано имя пользователя (строка из латинских заглавных и строчных букв) и одно число — объем данных данного пользователя.
Программа должна вывести в первой строке число \(K\) — наибольшее количество пользователей, чьи данные могут быть помешены в архив. Затем программа должна вывести \(K\) строк, содержащих имена пользователей, чьи данные следует поместить в архив.
Ввод | Вывод |
---|---|
100 3 |
2 |
В 179 школе есть много коньков самых разных размеров. Школьник может надеть коньки любого размера, который не меньше размеров его ноги. Известны размеры всех коньков и размеры ног школьников. Определите, какое наибольшее число школьников сможет одновременно пойти покататься.
Первая строка входных данных содержит количество коньков \(N \le 10^5\). Во второй строке записаны \(N\) чисел — размеры коньков. В третьей строке записано количество школьнико \(M \le 10^5\). В следующих \(M\) строках записана информация о школьниках, в каждой строке записано имя школьника (строка из латинских заглавных и строчных букв) и одно число — размер ноги школьника. Все размеры — натуральные числа, не превосходящие \(10^9\).
Программа должна вывести число \(K\) — наибольшее количество школьников, которое сможет пойти на каток. В следующих \(K\) строках необходимо вывести имена школьников и размер коньков, которые наденет данный школьник.
Ввод | Вывод |
---|---|
4 |
2 |
Даны тройки целых чисел. Упорядочите их в лексикографическом порядке.
Первая строка входных данных содержит количество \(N \le 10^5\). В следующих \(N\) строках записано по три целых числа.
Выведите \(N\) строк, упорядочив данные тройки чисел в лексикографическом порядке (сначала по первому числу, затем — по второму, при их равенстве — по третьему).
Ввод | Вывод |
---|---|
4 |
1 2 3 |
Указание. Сделайте структуру pair
, один из компонентов которой в свою очередь также будет
pair
.
В этой задаче вам нужно научиться сортировать не числа, а рациональные дроби. Программа получает на вход \(N\) дробей: сначала задается число \(N\), потом идет \(N\) строк, в каждой из которых записана одна дробь. Дробь записана в виде \(a/b\), где \(a\) и \(b\) —натуральные числа.
Программа должна вывести список этих дробей в порядке неубывания. Если в списке есть две равные дроби \(a/b=c/d\), то раньше выводится дробь, у которой меньше числитель.
Ввод | Вывод |
---|---|
3 |
2/6 |
Указание как считывать данные вида a/b
:
int a, b; char c; cin >> a >> c >> b;
На командных олимпиадах по программированию, проводимых по правилам ICPC, команды в турнирной таблице упорядочены следующим образом:
Упорядочите результаты олимпиады по этим правилам.
Первая строка входных данных содержит количество команд \(n\) (\(1\le n\le 100\,000\)), участвовавших в турнире. Следующие \(n\) строк содержат результаты команд. В \(i\)-й строке записано два целых числа \(s_i\) (\(0\le s_i\le 100\)) — количество задач, решенных \(i\)-й командой и \(t_i\) (\(0\le t_i\le 100\,000\)) — штрафное время \(i\)-й команды.
Программа должна вывести \(n\) чисел от 1 до \(n\) — номера команд в порядке их следования в турнирной таблице.
Ввод | Вывод |
---|---|
5 |
5 2 1 3 4 |
Другая симпатичная и предприимчивая девушка ищет себе идеального партнера для танцев.
Идеальный кавалер по ее представлениями должен иметь рост 180 сантиметров, поэтому прежде всего она хочет найти юношу, чей рост как можно ближе к 180 сантиметрам. Будет ли кавалер выше или ниже указанной величины, не имеет значения (то есть юноши с ростом 179 и 181 сантиметр одинаково привлекательны).
Среди всех кандидатов одного роста ей нужен кто-то, чей вес насколько это возможно, близок к 75 килограмм, но не превышает этой величины. Если же все кандидаты одного роста весят более 75 килограмм, то девушка выберет самого легкого из них.
Вам дан список кавалеров, содержащий имя партнера, его рост и вес.
Отсортируйте список по критерию привлекательности роста, при равной привлекательности роста —по привлекательности веса. При одинаковых параметрах роста и веса список должен быть отсортирован в лексикографическом порядке.
Выведите отсортированный список (только имена кавалеров).
Ввод | Вывод |
---|---|
10 |
John |
Как известно, Россия является одним из ведущих экспортеров нефти. Разные страны мира, от достаточно больших до сравнительно маленьких, нуждаются в этой нефти как в воздухе. В ее состав в больших количествах входят ароматические углеводороды, которые обуславливают ее высокое качество. Доставка нефти в пункт назначения осуществляется с помощью нефтепровода. Считается, что количество нефти, отправленное в страну назначения, равно количеству полученной нефти. На самом деле это, конечно, не так. Как и многое другое, нефть воруют некоторые несознательные личности. Причем неофициально считается, что больше нефти воруют в нефтепроводах тех стран, куда нефти посылается больше (может быть, несознательные личности считают, что приносят, таким образом, меньше ущерба, кто знает...). Официальное руководство компании РусскаяНефть решило узнать, правдивый это слух или нет, чтобы усилить (а может просто установить) охрану на тех нефтепроводах, где больше всего воруют нефть.
Для этого им нужно отсортировать нефтепроводы по количеству нефти, которая протекает в направлении какой-то страны за сутки. У компании РусскаяНефть, как и у любой уважающей себя компании, есть несколько штатных программистов, и руководство предложило им решить эту, в сущности, нетрудную задачу. Но программистов поставило в тупик то, что данные о количестве нефти представлены в разных единицах измерения (начиная от граммов и заканчивая тоннами).
Поэтому они решили найти человека, который был бы в силах решить эту задачу за них, и обещают взять его на работу в эту перспективную и процветающую компанию. Решите задачу, и, кто знает, может, повезет именно Вам?
В первой строке входных данных находится целое число \(N\) (\(1\le N\le 1000\)) — количество нефтепроводов. В каждой из следующих \(N\) строк находится количество (точнее — масса) нефти, транспортированной по соответствующему нефтепроводу за сутки, по одному в строке. Масса нефти задана целым числом от 1 до 10000 с указанием соответствующей единицы измерения. Число и единица измерения разделены ровно одним пробелом. Единица измерения задается одной из трех букв: g (граммы), p (пуды), t (тонны), причем перед этой буквой может стоять одна из приставок: m (милли-), k (кило-), M (мега-), G (гига-). Напомним, что эти приставки обозначают умножение единицы измерения на 10-3, 103, 106 и 109 соответственно. 1 пуд = 16380 граммов, 1 тонна = 106 граммов.
Выведите N строк, в которых должны быть записаны массы нефти в порядке неубывания. Каждая строка должна описывать массу нефти в одном из нефтепроводов.
Масса должна быть описана согласно формату входного файла. Единицы измерения масс в выходном файле не обязаны соответствовать единицам измерения масс во входном файле, главное, чтобы массы были равны исходным. Все числа в выходном файле, также как и во входном, должны быть натуральными и не превышать 10000.
Ввод | Вывод |
---|---|
5 |
32 mg |