Вы находитесь на странице: 1из 20

A.

Арифметика 64-битных целых


Ограничение времени 1 секунда

Ограничение памяти 64Mb

Ввод стандартный ввод или input.txt

Вывод стандартный вывод или output.txt


Боб написал программу, которая считывает беззнаковое 64-битное целое число X, умножает
его на 3 и сохраняет результат как беззнаковое 64-битное целое число (в языке C/C++ такой
тип называется unsigned long long). После чего Боб предложил Алисе за 3 попытки
угадать по результату, какое число он ввёл исходно. Алиса справилась за одну попытку. А
получится ли это у вас?

Формат ввода
Входные данные содержат одно целое число в интервале от 0 до 264-1 включительно —
результат работы программы

Формат вывода
Выведите введённое Бобом число X. Число должно находиться в интервале от 0 до 264-
1включительно.

Пример 1
Ввод Вывод

3 1

Пример 2
Ввод Вывод

12297829382473034410 16397105843297379214
B. Прохождение сферы
Ограничение времени 1 секунда

Ограничение памяти 64Mb

Ввод стандартный ввод или input.txt

Вывод стандартный вывод или output.txt


Как известно, Флатландия — это страна, целиком расположенная в двумерной плоскости.
Однажды через плоскость, в которой расположена Флатландия, двигаясь равномерно и
прямолинейно, прошла трёхмерная сфера. Жителям Флатландии она представлялась в виде
круга с меняющимся радиусом. Сотрудники Флатландской обсерватории произвели замеры
радиусов окружностей в различные моменты прохождения сферы, записав каждый радиус на
отдельной карточке. Когда через некоторое время после прохождения учёные решили
восстановить последовательность прохождения, оказалось, что карточки перемешались и к
ним, возможно, попали какие-то карточки из предыдущих экспериментов.
Ваша задача — по заданному набору чисел, написанных на карточках, восстановить
возможный порядок наблюдения или определить, что в наборе есть посторонние карточки.

Формат ввода
Первая строка входных данных содержит одно целое число N — количество карточек (2 ≤ N ≤
105). Во второй строке заданы целые положительные числа, записанные на карточках.
Гарантируется, что ни одно из этих чисел не превосходит 109.

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

Пример 1
Ввод Вывод

5 1 2 3 4 5

3 4 5 2 1

Пример 2
Ввод Вывод

5 -1

1 1 1 1 1
C. Восстановление прогрессии
Ограничение времени 1 секунда

Ограничение памяти 64Mb

Ввод стандартный ввод или input.txt

Вывод стандартный вывод или output.txt


В множестве A есть N попарно различных целых положительных чисел. Какое наименьшее
количество целых положительных чисел надо добавить, чтобы числа в получившемся наборе
при некотором упорядочивании образовывали арифметическую прогрессию?
Числа считаются образовывающими арифметическую прогрессию, если разность между
любыми двумя соседними числами одинакова.

Формат ввода
Первая строка входных данных содержит одно целое число N (2≤N≤105). Во второй строке
заданы N попарно различных целых положительных чисел, не превосходящих 109 —
элементы множества A.

Формат вывода
Выведите одно число — количество целых положительных чисел, которые следует добавить
в множество A, чтобы выполнялось требование задачи.

Пример 1
Ввод Вывод

2 0

20 18

Пример 2
Ввод Вывод

3 1

4 1 2
Примечания
В первом примере числа 18 и 20 уже образуют арифметическую прогрессию с разностью 2,
так что добавлять что-то не требуется.
Если во втором примере добавить число 3, то из элементов множества можно сложить
арифметическую прогрессию 1, 2, 3, 4 (или 4, 3, 2, 1).
D. Маша+Саша
Ограничение времени 3 секунды

Ограничение памяти 64Mb

Ввод стандартный ввод или input.txt

Вывод стандартный вывод или output.txt


Однажды Саша прогуливалась по улицам Санкт-Петербурга. Переходя через Дворцовый
мост, она увидела на льду странную надпись: «С + В». «Очевидно, эту надпись написала
какая-то влюбленная пара. Однако, интересно, в этой записи первым идет мужское имя или
женское?» — подумала Саша. Придя домой, она решила более подробно изучить этот
вопрос.
Для этого она вспомнила все известные ей мужские и женские имена, а также все надписи
вида «A + B», которые она встретила, гуляя по Петербургу. Саша считает, что в любой
надписи имена идут либо в порядке «мужчина + женщина», либо «женщина + мужчина». Для
каждой такой надписи и для каждого возможного порядка Саша считает количество
соответствующих подходящих пар. Пара подходит, если первая буква первого имени
совпадает с первой буквой надписи, и первая буква второго имени совпадает со второй
буквой надписи. Для более точного понимания условия смотрите тестовые примеры. Если
подходящих пар типа «мужчина + женщина» больше, то она считает, что на первом месте
стоит мужское имя. Если таких пар меньше, то на первом месте стоит женское имя. Если их
поровну, то определить это никак не получится.

К сожалению, Саша встретила слишком много подобных надписей на улицах Санкт-


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

Формат ввода
В первой строке входных данных записано 3 целых числа m, f, k (1 ≤ m, f, k ≤ 105) —
количество известных Саше мужских, женских имен, а также количество надписей
соответственно.
В следующих m строках записаны все известные Саше мужские имена. Каждое имя это
непустая строка, состоящая только из букв латинского алфавита, причем первая буква —
заглавная, а остальные — строчные. Длинна каждого имени не превосходит 10.
В следующих f строках записаны все известные Саше женские имена в аналогичном
формате.
В следующих k строках записаны все встретившиеся Саше надписи в формате «A+B»,
где A и B — заглавные буквы латинского алфавита.

Формат вывода
Для каждой надписи в отдельной строке выведите единственное слово «male», если в ней на
первом месте стоит мужское имя, «female» если женское и «draw», если определить
половую принадлежность невозможно.

Пример
Ввод Вывод

3 4 5 male

Vlad female

Sasha draw

Dimka male

Sasha draw

Nina

Sergey

Darya

V+S

S+V

D+D

D+S

S+M

Примечания
Есть только одна пара, подходящая для первой надписи — Vlad + Sasha, поэтому для
первой надписи ответ male
Аналогично для второй надписи ответ female, так как подходит та же пара, в которой люди
поменялись местами.
Для третьей надписи подходят уже две пары: Dimka + Dasha и Dasha + Dimka, и
невозможно определить, кто стоит на первом месте.
В четвёртой надписи также есть две подходящие надписи: Dimka + Sasha и Dimka +
Sergey. В обоих случаях на первом месте стоит мужское имя, поэтому ответ male.
В пятой надписи не существует ни одного человека, чьё имя начиналось бы на букву M,
поэтому существует 0 подходящих пар, и невозможно определить, кто стоит на первом месте.
E. Без комментариев
Ограничение
1 секунда
времени

Ограничение памяти 64Mb

Ввод стандартный ввод или input.txt

Вывод стандартный вывод или output.txt

Вам дан исходный код программы на подмножестве языка C++, возможно, с комментариями.
Требуется вывести тот же самый код, убрав все комментарии.
Комментарии бывают двух типов:
 Однострочный комментарий может начинаться в любом месте строки с двух символов
`/', идущих подряд. Весь текст после этих символов считается комментарием и
компилятором игнорируется.
 Многострочный комментарий начинается с последовательности символов “/*” и
заканчивается последовательностью символов “*/”. Всё, что находится между этими
парами символов, считается комментарием. Многострочный комментарий воспринимается
компилятором как один пробел (то есть a=1+1/*Comment*/2 интерпретируется
компилятором как a=1+1 2, а не как a=1+12.

Также справедливы следующие ограничения:


 Символы начала комментариев внутри комментариев игнорируются.
 Символы начала и конца комментариев внутри строковой константы игнорируются.
 Строковая константа представляет собой набор символов, обрамлённый одинарными
кавычками `"'. При этом кавычка или перевод строки внутри строковой константы в
качестве символа встретиться не могут.
 Внутри комментария строковая константа не выделяется (то есть первая кавычка
строковой константы обязана быть вне комментариев).

Формат ввода
Входные данные состоят из не более чем 50 строк, содержащих код программы с
комментариями и состоящих из символов с ASCII-кодами от 32 до 126 включительно.
Гарантируется, что программа является корректной с точки зрения задачи, то есть все
открытые многострочные комментарии корректно закрыты, каждая кавычка имеет парную в
той же самой строке, что программа не содержит пробелов в конце строки и что размер
программы не превышает 104 байт.

Формат вывода
Выведите программу в том виде, который она примет после удаления комментариев.
Пробелы в конце строк и пустые строки в конце файла на правильность ответа не влияют.

Пример
Ввод Вывод

#include <iostream> #include <iostream>

using namespace std; using namespace std;

main() main()

{ {

int a = 1/*This is int a = 1 + 2;

a comment*/+ 2; cout << a << endl;

cout << a << endl; //One-line return 0;


comment }
return 0;

}
F. Информатика и хулиган
Ограничение
1 секунда
времени

Ограничение памяти 64Mb

Ввод стандартный ввод или input.txt

Вывод стандартный вывод или output.txt

Хулиган Вася на перемене перед уроком информатики написал на доске слово. Учительница
информатики предложила классу следующую игру: за одну операцию разрешается менять
местами любые две соседние буквы. Требуется за не более, чем N операций получить слово,
как можно меньшее лексикографически.
Ваша задача — написать программу, которая решает поставленную учительницей задачу.

Формат ввода
Первая строка входных данных содержит написанное Васей слово. Слово состоит не менее,
чем из одной, и не более, чем из 2 ⋅ 105 строчных латинских букв. Вторая строка содержит
целое число N (0 ≤ N ≤ 109).

Формат вывода
Выведите лексикографически наименьшее слово, которое можно получить из написанного
Васей слова не более, чем за N операций.

Пример 1
Ввод Вывод

cognitive cgnoitive

Пример 2
Ввод Вывод

technologies technologies

Пример 3
Ввод Вывод

mipt impt

1
G. Развитие туризма
Ограничение
1 секунда
времени

Ограничение памяти 64Mb

Ввод стандартный ввод или input.txt

Вывод стандартный вывод или output.txt

В Байтландии существует N городов и M дорог с односторонним движением, каждая дорога


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

Какое наименьшее количество дорог следует построить, чтобы выполнить распоряжение


королевы?

Формат ввода
Первая строка входных данных содержит два целых числа N и M (1 ≤ N ≤ 104, 0 ≤ M ≤ 105) —
количество городов и количество дорог соответственно. Каждая из последующих M строк
описывает одну дорогу и содержит два целых числа s и f — город, из которого выходит дорога
и город, в который она приходит, соответственно (0 ≤ s, f ≤ N-1, s ≠ f). Гарантируется, что
любая пара (s,f) встретится во входных данных не более одного раза.

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

Пример
Ввод Вывод

6 7 2

5 2

2 1

1 5

2 3

4 3

4 0

0 4
H. Бросаем яйца!
Ограничение времени 3 секунды

Ограничение памяти 64Mb

Ввод стандартный ввод или input.txt

Вывод стандартный вывод или output.txt


Илья каждый день проходит мимо высокого серого здания с огромным белым шаром на
крыше. В какой-то момент ему пришла в голову мысль: «А не скинуть ли мне этот шар?» К
сожалению, шар оказался слишком большим, поэтому Илья решил скидывать яйца, которые
он купил в столовой неподалёку.
Илья знает, что если яйцо разбилось на каком-то этаже, то на всех более высоких этажах оно
тоже разобьётся. Поэтому ему захотелось определить этаж, на котором яйца начнут
разбиваться. К сожалению, денег у него хватило только на два яйца, поэтому Илья
разработал следующий алгоритм:
1. Илья разбивает все этажи на группы подряд идущих.
2. Начиная со второй группы он бросает первое яйцо с первого этажа каждой группы,
пока оно не разобьётся.
3. Как только яйцо разбилось, он начинает бросать второе яйцо с первого этажа
предыдущей группы, с которого мы ещё не бросали яйцо. Яйцо бросаем до тех пор, пока
оно не разобьётся, либо пока не бросим его поочерёдно с каждого этажа группы. Это
позволяет однозначно определить этаж, на котором яйцо начинает разбиваться.
4. Если на первом шаге яйцо не разбилось, Илья продолжает бросать его подряд по
этажам последней группы, пока оно не разобьётся.
5. Если яйцо не разбивается, то небоскрёб слишком маленький, чтобы его яйца начали
на нём разбиваться. Однако, Илья не верит в это, поэтому повторяет эксперимент ещё раз
(с тем же результатом, разумеется)

Для лучшего понимания алгоритма смотрите тестовые примеры.


Всего возможен n + 1 исход — яйцо разбивается на каком-то этаже, либо не разбивается
вообще. Посчитаем суммарное количество бросков, которое требуется сделать при каждом
исходе и поделим на количество возможных исходов. Илья хочет разбить этажи на группы
так, чтобы это число стало минимальным. Помогите ему в этом.

Формат ввода
В единственной строке входных данных записано целое число n (1 ≤ n ≤ 104) — количество
этажей в небоскрёбе.
Формат вывода
В первой строке выведите одно целое число k (1 ≤ k ≤ n) — количество групп.
Во второй строке выведите k целых чисел ai (1 ≤ ai ≤ n) — количество этажей в очередной
группе. Суммарное количество этажей по всем группам должно быть равно n.

Пример 1
Ввод Вывод

3 2

2 1

Пример 2
Ввод Вывод

4 2

2 2

Примечания
В первом тесте мы разбили все этажи на две группы. В первую группу вошли первый и второй
этаж, во вторую группу — третий этаж.
Пусть яйцо начинает разбиваться на первом этаже. Тогда мы сначала бросим яйцо на
третьем этаже (так как это первый этаж второй группы), затем на первом этаже. Итого мы
сделаем два броска.

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

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

Если яйцо не разбивается на нашем небоскрёбе, то мы сначала бросим яйцо с третьего


этажа, оно не разобьётся, и мы для чистоты эксперимента бросим его ещё раз. Итого мы
сделаем два броска.
Суммарно получилось 10 бросков, то есть в среднем мы сделаем 2.5 броска.
Если разбивать этажи на группы каким-нибудь другим способом, то бросков будет больше.
Например, если сделать одну группу из трёх этажей, то суммарно будет 12 бросков, и
среднее количество бросков будет 3.

Во втором тестовом примере есть пять исходов:


1. Яйцо разбилось на первом этаже: 2 броска
2. Яйцо разбилось на втором этаже: 3 броска
3. Яйцо разбилось на третьем этаже: 3 броска
4. Яйцо разбилось на четвёртом этаже: 2 броска
5. Яйцо не разбилось: 4 броска
Итого 14 бросков, 2.8 бросков в среднем.

ЗАГОВОР НА УДАЧНОЕ ЗНАКОМСТВО


ЗАГОВОР НА УДАЧНОЕ ЗНАКОМСТВО

Имеется в виду не обязательно любовное знакомство, а знакомство с таким


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

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

Налью я чаю, да народ созову,

Приходи ко мне всяк,

Не урод, не дурак,

Приходи ко мне в дом,

Стань товарищем потом.

Да и в свой приглашай,

Не глупи, на плошай.

Мне чай сладкий пить,

А удачному знакомству быть!

А пустых да хмельных,

Да неумных, да чужих,

Чтоб ко мне не хаживало,

Не приваживало.

Слово мое крепко и лепко.

Аминь.

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

Представь, ты идешь по улице и видишь потрясающую девушку. Естественно, у тебя


возникает желание с ней познакомиться. Как это сделать?

ПОДЕЛИТЬСЯ:

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

Между тем, существуют определенные схемы начала беседы, которые позволяют


разговорить даже самых несговорчивых барышень. 

И эти схемы не настолько сложны – все происходит очень просто, если ты действуешь
уверенно. 

Я сейчас дам тебе все необходимые схемы и советы. Но сначала… 

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

Однако все совсем не так. 

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

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

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


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

Т.е. по сути, она просто ждет, когда ты начнешь общаться уверенно и интересно (интересно –
значит, позитивно и необычно реагировать на ее отшив). А когда она убеждается, что ты
действительно интересный парень – сдается. 
Это, пожалуй, главная фишка, которая помогает завязать беседу даже с той девушкой,
которая с самого начала тебе отказывала. 

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

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

Основные типы первых фраз


Рассмотрим основные виды контекстуальных фраз для знакомства (есть еще и директивные
фразы, но знакомиться в директивном стиле под силу далеко не всем; поэтому его мы
разбирать не будем).

 Ее поведение или реакция

Например, если к девушке уже подошло несколько парней, то можешь подойти и сказать: «И
давно ты здесь парней клеишь? :)» или «Как тебе не стыдно!? Теперь эти парни не смогут
заснуть сегодня ночью, потому что ты их отвергла :)».

Эти фразы касаются ее поведения и отличаются от банального «Привет! Как дела?».

«Девушка, зачем вы так быстро идете? Вы же ведь каблуки сотрете!».

Ты можешь научиться высасывать фразы из воздуха.

 Ее внешний вид

«О классные туфли. На днях видел такие же у английской королевы…» - если у нее туфли,
которые никогда не одела бы английская королева. ;)

«Классно выглядишь! Думаю, мало кто так умеет подбирать сочетания цветов в одежде»
- если она действительно хорошо подобрала сочетания цветов в ее внешнем виде.

«Привет! Никогда не думал, что пуговицы могут улучшать внешний вид. Обычно только
портят, но в твоем случае все совсем наоборот :)» - если на ней кофта с необычными
пуговицами.

Придумать можно какие угодно фразы. Главное – практика.

 То, что происходит вокруг

«Куда они все пошли?» - если толпа людей движется в одном направлении.

«Видели, как две девушки подрались из-за парня?» - можно сказать даже тогда, когда на
самом деле этого не было.

Контекстуальные фразы – самый легкий способ завязать беседу с девушкой. Но если ты


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

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

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

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

Используй сногсшибательные
вопросы
Найди в интернете (а лучше придумай сам) такие вопросы, которые будут вызывать у
девушки желание ответить и начать общение.

Главное – чтобы эти вопросы были очень интересными и нестандартными.

Например, можешь спросить у нее: «Привет! Ты умеешь готовить блины?». Ты не


спрашиваешь, может ли она тебе помочь. А просто ошарашиваешь ее таким вопросом, чтобы
она потеряла дар речи. :)

Ну, а потом ты просто рассказываешь, что тебе нужно срочно приготовить блины, и ты не
знаешь, как это сделать. Можешь заранее придумать интересную историю, зачем тебе
понадобились эти блины, и рассказывать ее девушкам при каждом знакомстве.

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

И если в обычных ситуациях девушка еще до знакомства готова к тому, что ты начнешь
знакомиться, то здесь у тебя больше шансов на успех.

Схемы диалогов при знакомстве


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

Когда ты это сделаешь, у тебя появится статистика самых распространенных женских


ответов на каждую из твоих фраз. Затем ты просто придумываешь интересные
работающие ответы уже на их ответы.

Не стоит лезть в дебри и продумывать диалог на 10 фраз вперед. :) Трех «уровней» будет
вполне достаточно.

Скорее всего, такая работа займет определенное время.

Но что делать, если времени на придумывание таких схем у тебя нет, и говорить что-то нужно
уже сейчас?
Когда сразу ничего и не придумаешь
Из наших статей ты уже узнал, что подходить к девушке нужно сразу. Но что делать, если
придумать интересную контекстуальную фразу у тебя просто нет времени?

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

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

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

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

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