Информатика

1 132 задачивместе с подтемами
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.
There is an urban myth that Peter the Great wanted to make a rectangular channel-grid engineering masterpiece not only from Vasilyevskiy island, but also from Kotlin island (where the town of Kronstadt is located nowadays).

The following mathematical model was (allegedly) presented to the tsar. The island is considered a rectangular grid h cells high and w cells wide. Each cell is dry land initially but can become water.

Technologies of those days allowed engineers to dig a channel across the entire island. In that case an entire row or an entire column of cells became water. If some of these cells already were water, their status did not change.
Your task is to propose a plan of the island which has exactly n connected components of dry land cells.

Input
The only line of the input contains three integers h, w, and n — grid’s height, width and the desired number of connected components (1 ≤ h, w ≤ 100; 1 ≤ n ≤ 109 )

Output
If there is no valid plan containing n connected components, output a single word “Impossible”. Otherwise output h lines of length w depicting the plan. Dot (‘.’) represents a dry land cell, hash (‘#’) represents a water cell.
 
Input Output
3 5 4 ..#..
#####
..#..
2 1 1 # .
5 3 10 Impossible
There are two kinds of sounds in spoken languages: vowels and consonants. Vowel is a sound, produced with an open vocal tract; and consonant is pronounced in such a way that the breath is at least partly obstructed. For example, letters a and o are used to express vowel sounds, while letters b and p are the consonants (e.g. bad, pot).

Some letters can be used to express both vowel and consonant sounds: for example, y may be used as a vowel (e.g. silly) or as a consonant (e.g. yellow). The letter w, usually used as a consonant (e.g. wet) could produce a vowel after another vowel (e.g. growth) in English, and in some languages (e.g. Welsh) it could be even the only vowel in a word.
In this task, we consider y and w as vowels, so there are seven vowels in English alphabet: a, e, i, o, u, w and y, all other letters are consonants.

Let’s define the consonant fencity of a string as the number of pairs of consecutive letters in the string which both are consonants and have different cases (lowercase letter followed by uppercase or vice versa). For example, the consonant fencity of a string CoNsoNaNts is 2, the consonant fencity of a string dEsTrUcTiOn is 3 and the consonant fencity of string StRenGtH is 5.

You will be given a string consisting of lowercase English letters. Your task is to change the case of some letters in such a way that all equal letters will be of the same case (that means, no letter can occur in resulting string as both lowercase and uppercase), and the consonant fencity of resulting string is maximal.

Input
The only line of the input contains non-empty original string consisting of no more than 106 lowercase English letters.

Output
Output the only line: the input string changed to have maximum consonant fencity.
 
Input Output
consonants CoNsoNaNts
destruction dEsTrUcTiOn
strength StRenGtH
На уроке информатике Антон Витальевич задал придумать задачи на перестановки. Ребята в 43 кабинете очень обрадовались этому заданию и решили придумать n гробов для своего класса. Сложность каждой задачи – это число от 1 до n. Ребята хотят узнать насколько, они «загробили» контест, коэффициент «загробленности» (КЗ) считается, как номер перестановки, которую подали на ввод. Ребята радуются, если КЗ будет больше, чем сумма разниц между двумя подряд идущими элементами в данной перестановки по модулю умноженная на количество гробов в контесте.
 
Вывести “positumque loculum” (гроб), если ребята будут рады своей работе, иначе вывести наименьшую подходящую перестановку (элементы разделять пробелами), номер которой |КЗ – номер текущей| <= k, а если это невозможно, то вывести “easily”.
 
В первой строке вводится количество гробов в контесте n <= 7 и k, 0 <= k <= n!
 
Во второй строке вводится сама перестановка.
Ввод Вывод
7 2518
7 5 2 4 1 6 3
positumque loculum
4 1
3 2 4 1
easily
4 2
3 2 4 1
3 4 2 1


Приятного решения ♥♥
(с) Елизавета Ястреба

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

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

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

 

Формат ввода

В первой строке дано единственное натуральное число n ( n  200 000) — количество посылок.

Затем следует n строк, в каждой из которых содержится по два числа di и wi ( di  200 000 wi  200 000) — последний день, когда можно доставить посылку без штрафа и стоимость опоздания для i-й посылки.

 

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

В первой строке выведите единственное число, равное минимально возможному суммарному штрафу. Во второй строке через пробел выведите n чисел, где i-е число — день, в который необходимо доставить i-ю посылку.

Если возможно несколько оптимальных расписаний, выведите любое из них.

 

Пример

Ввод Вывод
3
1 2
1 3
3 1
2
3 1 2 
Сегодня Колобок созвал всех волков и лис к себе в гости на чаепитие. Чаепитие пройдет за круглым столом, за которым всего n мест. Колобок хочет рассадить зверей по-особенному — так, чтобы волки не сидели только с волками, а лисы только с лисами. Поэтому для каждого места он записал одно целое число — сколько лис должно сидеть на расстоянии не более d от этого места, включая это место.

Два места находятся на расстоянии не более d, если между ними встречаются не более d−1 места при движении по или против часовой стрелки от одного к другому. Таким образом, для заданного места всего существует 2d + 1 место, находящееся на расстоянии не более d от него.

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

Входные данные
В первой строке находятся два натуральных числа n, d (3 ≤ n ≤ 105 , 3 ≤ 2d+1 ≤ n) — количество мест за круглым столом и расстояние d. В следующей строке находятся n неотрицательных целых чисел ai (0 ≤ ai ≤ 2d+1) — количество лис на расстоянии не более d от этого места, включая это место. Информация о местах перечислена в порядке их следования по кругу.

Выходные данные
Если решения не существует, выведите «NO», иначе в первой строке выведите «YES», а в следу- ющей n чисел: 1 в том случае, если на этом месте сидит лиса, и 0, если на этом месте сидит волк. Если ответов несколько, разрешается вывести любой.
 
Ввод Вывод
5
1 2 2 1 2 2
YES
1 0 1 0 1
9
2 3 4 4 3 3 2 2 2 2
YES
1 0 1 1 1 0 0 0 1
6
1 3 3 3 3 3 1
NO
Сначала Антону Витальевичу показалось, что объявить приз на самую упоротую задачу – очень хорошая идея. Но когда его просто завалили этими задачами, он понял, что не успеет проверить их все к Новому Году. Поэтому он, пообещав хорошую оценку в журнал, дал Вам задание написать проверяющую эти задачи программу. (Ваш вопрос «А почему вы не можете сделать этого сами?» остался без ответа).

Задача – это набор текста, содержащего русские слова, заглавные латинские символы и числа, разделённые знаками препинания, специальными символами и пробелами. Упоротость задачи можно выразить целым неотрицательным числом, зависящим от многих факторов. Во-первых, чем длиннее задача, тем она упоротее, поэтому за каждое русское словоупоротость увеличивается на 1. Но если задача слишком длинная, то она из упоротой превращается в скучную. Поэтому, если количество слов превышает 50, то за каждое лишнее слово упоротость уменьшается на 2. Во-вторых, чем больше исходных данных, то есть латинских символов, тем задача упоротее, так что за каждый латинский символ упоротость умножается на 2. В-третьих, чем больше чисел нам дано сразу, тем задача скучнее, поэтому за каждое число упоротость делится на 10. Но если число отделено от латинского символа только пробелами, знаками препинания или специальными символами, то оно считается ограничением и вместо деления на 10 просто увеличивает упоротость на 30. В-четвёртых, знаки препинания – это всегда скучно, так что из-за них упоротость уменьшается на округлённый вверх двоичный логарифм их общего количества. Специальные символы и пробелы на упоротость никак не влияют. Если в результате получается нецелое число, оно округляется вниз.

Общая длина задачи не более 2*10^9 символов.
Русские слова - слова, состоящие из символов, не являющихся заглавными латинскими буквами, числами, знаками препинания и специальными символами.
Двоичным логарифмом нуля считать ноль.
К знакам препинания относятся , . ! ? ( ) : 
К специальным символам относятся & * = + - / ><
 
Дана задача. Вам необходимо подсчитать её общую упоротость.
 
Формат ввода
Дан текст с единственным символом переноса в конце.
 
Формат вывода
Вывести единственное число – общую упоротость задачи.

Пример
Ввод:
2 N 2 N 2 N 2 N 2
 
Вывод:
2400

(с) Даниил Кирионенко, 9и
И вот вновь наступил Новый Год, и Васе снова понадобилось наряжать ёлку. Но, памятуя о своих прошлогодних неудачах (Вы о них знаете, если решали прошлогодний контест), он купил в магазине брендовые ударопрочные шарики. К сожалению, на ёлку в результате денег почти не осталось, и её пришлось покупать у какого-то индуса. Поэтому ёлка имеет форму полного двоичного дерева глубины N – на верхушке только одна ветка, и под каждой веткой, кроме самых нижних, снизу растёт ровно две. В самом низу, соответственно, под ветками только Васин немытый пол.

Но когда Вася приступил к украшению, он понял, что совершил страшную ошибку. Ударопрочные шарики были одноцветными и скучными, поэтому Вася не мог развесить их как попало, как он делал это раньше. Пришлось ему разрабатывать алгоритм украшения. Для начала он соотнёс каждому цвету его индекскрасоты – параметр от 0 до 109. Чем он больше, тем более красивым кажется Васе шар этого цвета. Потом он случайным образом развесил шарики у пола (на каждую ветку Вася всегда вешает только один шар). Для всех остальных веток Вася смотрел на их нижних соседей, определял, какой из висящих на этих ветках шариков красивее, и вешал на эту ветку точно такой же.

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

Нижние ветви пронумерованы от 1 до 2^(N- 1), более верхним Вася из лени решил номера не давать. Вася подаёт на вход два вида запросов. В первом он заменяет какой-либо шар в нижнем уровне с номером k на шар цвета c, и хочет узнать, на скольких слоях веток (кроме нижнего) ему придётся перевесить шары, чтобы ёлка по-прежнему подходила под описанный выше алгоритм. Во втором он хочет узнать цвет самого красивого шара в секторе от l до r. К сектору относятся все ветки нижнего слоя с номерами от l до r включительно, а также все находящиеся над ними ветки.То есть, если N = 3, то к секторуот 1 до 2 относятся ветки 1 и 2, а также третья ветка, находящаяся между ними чуть выше.

Формат ввода
В первой строке задана глубина ёлки N (N<= 15) и количество запросов M (M<= 107). Во второй строке задана первоначальная развеска нижних шариков, представленная их индексами красоты. В следующих M строках заданы запросыдвух типов (первый обозначен цифрой 1, а второй, как ни странно, 3). Описание запросов дано выше.

Формат вывода
Нужно вывести Mстрок, содержащих ответы на запросы.
Пример
Ввод:
4 5
1 1 2 3 100 7 11 3
3 1 8
3 2 4
1 5 4
3 1 8
1 5 9
 
Вывод:
100
3
3
11
1
 
(c) Даниил Кирионенко, 9и
Сегодня в Москве отмечается Новый год. Для танца составили схему, на которой показано кто и где находится. Есть несколько групп людей, одетых в разных персонажей. 

Е-елка
О-охрана
1-зона 1
2-зона 2
3-зона 3
4-зона 4
Х-олени
К-зайцы
С-снеговики
М-медведи
Л-лисицы
В-волки
П-подарки
Д-деды Морозы.

Вот план для размеров поля 9 на 9. Размер поля всегда нечетный и больше 8.

О М М М 2 С С С О
Л О М М 2 С С О К
Л Л О М 2 С О К К 
Л Л Л О О О К К К
3 3 3 О Е О 1 1 1
В В В О О О Х Х Х
В В О П 4 Д О Х Х
В О П П 4 Д Д О Х
О П П П 4 Д Д Д О

Человек, находящийся в зоне 1, одет в зайца, если стоимость его костюма кратна 3, в противном случае, он одет в оленя.
Человек, находящийся в зоне 2, одет в снеговика, если стоимость его костюма кратна 5, в противном случае, он одет в медведя.
Человек, находящийся в зоне 3, одет в лисицу, если стоимость его костюма кратна 5, в противном случае, он одет в волка.
Человек, находящийся в зоне 4, одет в подарок, если количество единиц его стоимости , записанной в двоичной системе счисления, больше количества нулей, в противном случае, он одет в Деда Мороза.
Про каждый костюм известно, за сколько его можно сшить.
Посчитайте и выведите стоимость костюма елки, затем охраны.
Затем надо вывести в порядке убывания стоимость и название костюма персонажа.

  • Входные данные:
    Вводится n-размер квадратной матрицы, затем сама матрица.
  • Выходные данные:
    Вывести сначала стоимость костюма елки, затем сумму всех костюмов охраны, затем в порядке убывания стоимость костюмов остальных персонажей и название костюма.
  • Входные данные:
    9
    0 1 1 0 2 5 5 4 1
    2 3 2 4 5 6 1 2 0
    1 2 3 4 2 3 1 2 3
    1 2 2 4 3 5 7 1 2
    0 2 3 1 2 3 4 5 6
    0 1 2 3 5 3 3 4 5
    5 6 2 7 4 2 2 4 2
    8 4 3 4 3 1 3 4 5
    6 7 8 2 5 2 1 3 3
  • 2
    58
    39 podarok
    32 olen
    27 snegovik
    27 volk
    21 zayka
    16 medved
    16 ded moroz
    10 lisiza

(с) Чуканова Юля, 10и

int main()
{
       string s;
       vector <int> arr = { 70, 109, 108, 96, 37, 100, 114, 113, 41, 56, 96, 61, 59 };
       for(int i = 0; i < arr.size(); i++)
       {
             int x = s[i];
             cout << (x ^ arr[i]) << " ";
       }
       return 0;
}

Какое значение должна принимать строка s, чтобы в результате выполнения программы было выведено
 
1 2 3 4 5 6 7 8 9 10 11 12 13
 
?
 
Входные данные
 
Входные данные пусты
 
Выходные данные
 
Выведите одну строку – ответ на задачу.

(c) Егор Курбатов, 10и
Архиватором называется программа, предназначенная для сжатия данных за счет удаления избыточной информации. В этой задаче вашей целью является разработка простейшего архиватора текстов на русском языке.  В таких текстах многие знаки стандартной таблицы символов не встречаются, поэтому они могут быть использованы для замены часто повторяющихся последовательностей символов. 
 
Заданы последовательности, которые могут быть заменены некоторыми символами английского алфавита, а также исходный текст, который следует сжать. Поскольку в исходном тексте эти последовательности могут накладываться друг на друга, результат сжатия существенно зависит от порядка замен. Ваша задача состоит в том, чтобы получить сжатый текст наименьшей длины.
 
Входные данные
В первой строке входного файла задано целое число R - количество заменяемых последовательностей и целое число N - количество строк в исходном тексте (1<=N<=1000). Далее следуют R пар строк, описывающих возможные замены. Первая строка каждой пары содержит заменяемую последовательность, а вторая - заменяющий символ, являющийся большой или маленькой английской буквой. Различным заменяемым последовательностям соответствуют разные английские буквы (большие и маленькие буквы различаются). В следующих N строках записан текст,  подлежащий сжатию. В этом тексте, также как и в заменяемых последовательностях, отсутствуют буквы английского алфавита.
 
Выходные данные
В выходной файл вывести заархивированный текст.
 
Примечания
Символы перевода строки не заменяются (т.е. замены возможны только внутри строк). Длина каждой строки входного файла не превосходит 255 символов.
 
Пример входного файла
8 10
рхиватор
b
замен
D
ены
F
зам
G
быт
h
про
d
сжат
f
ом называется
g
Архиватором называется программа, предназначенная для сжатия данных за счет удаления 
избыточной информации. В этой задаче вашей целью является разработка простейшего 
архиватора текстов на русском языке. В таких текстах многие знаки стандартной таблицы 
символов не встречаются, поэтому они могут быть использованы для замены часто 
повторяющихся последовательностей символов. 
 
Заданы последовательности, которые могут быть заменены некоторыми символами английского 
алфавита, а также исходный текст, который следует сжать. Поскольку в исходном тексте эти 
последовательности могут накладываться друг на друга, результат сжатия существенно зависит 
от порядка замен. Ваша задача состоит в том, чтобы получить сжатый текст наименьшей длины.
 
Пример выходного файла
Аbg dграмма, предназначенная для fия данных за счет удаления 
изhочной информации. В этой задаче вашей целью является разработка dстейшего 
аbа текстов на русском языке. В таких текстах многие знаки стандартной таблицы 
символов не встречаются, поэтому они могут hь использованы для Dы часто 
повторяющихся последовательностей символов. 
 
Заданы последовательности, которые могут hь DF некоторыми символами английского 
алфавита, а также исходный текст, который следует fь. Поскольку в исходном тексте эти 
последовательности могут накладываться друг на друга, результат fия существенно зависит 
от порядка D. Ваша задача состоит в том, чтобы получить fый текст наименьшей длины.
 
Задано уравнение вида A+B=C, где A, B и C - неотрицательные целые числа, в десятичной записи которых некоторые цифры заменены знаками вопроса (?). Примером такого уравнения является ?2+34=4?. Требуется так подставить вместо знаков вопроса цифры, чтобы это равенство стало верным, либо определить, что это невозможно. Найти только одно из  возможных решений.
 
Входные данные
Вводится строка, представляющая собой заданное уравнение без пробелов. Длина уравнения не превышает 80 символов. 
 
Выходные данные
Требуется вывести верное равенство, полученное из исходного уравнения заменой знаков вопроса цифрами, либо сообщение "No solution".
 

Примеры
Входные данные Выходные данные
1 ??2?4+9?=355 00264+91=355
 
Коля попал на телеигру "Прямоугольное поле чудес". В финале этой игры Коле показали прямоугольное поле размера n х m клеток, в каждое клетке которого записано целое число.  Коля может
заменить числа в некоторых клетках на противоположные (т.е. вместо числа x записать в клетку число −x). Коля выиграет автомобиль, если сумма чисел в каждой строке и в каждом столбце будет равна нулю. Помогите Коле найти нужную расстановку чисел, либо определите, что ее не существует и Коля не сможет выиграть.
 
Формат входных данных
В первой строке записано два целых числа n и m (1 <= n, m <= 5)  - размеры поля.
В следующих n строках записано по m целых чисел, разделенных пробелами - числа, записанные в клетках поля. Все числа по модулю не превосходят 106.
 
Формат выходных данных
Если ответ существует, в первой строке выведите YES, в следующих n строках выведите по m чисел через пробел - числа в клетках поля после изменений/
Если ответа не существует, в первой строке выведите NO.
Ввод Вывод
3 3
1 1 2
2 2 4
3 3 6
YES
1 1 -2
2 2 -4
-3 -3 6
Вы управляете армией штурмовиков, сражающейся против армии повстанцев. Армия повстанцев состоит из n солдат, здоровье i-го солдата составляет ai единиц. Сила атаки каждого вражеского солдата равна de единиц. В Вашем распоряжении есть m штурмовиков. Сила атаки каждого из них — dt , здоровье — h единиц.

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

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

Формат входных данных
В первой строке входного файла заданы натуральные числа n, m, ( n,m <= 2*105),  de, dt , h — число солдат в армии противника, число штурмовиков в вашем распоряжении, сила атаки каждого солдата неприятеля, сила атаки и число единиц здоровья каждого из штурмовиков соответственно ( de, dt , h <= 109). В следующей строке задано n натуральных чисел ai — число единиц здоровья i-го солдата армии противника (ai <= 109).
Формат выходных данных
Выведите единственное число — минимальное количество штурмовиков, необходимое для уни чтожения армии противника, либо -1, если миссия невыполнима.
 
Ввод Вывод
3 3 1 1 2
1 2 3
3
4 10 2 1 2
1 2 1 2
5
3 1 1 2 5
1 2 3
-1
Один успешный бизнесмен Василий после двух долгих лет непрерывной работы ушел в долгожданный отпуск. Желая расслабиться, у него 
возникла идея завести сад из синих и красных цветов на заднем дворе своего коттеджа. Ежедневная работа с таблицами ему изрядно надоела, 
поэтому он хотел видеть сад круглой формы. Однако чтобы созерцание сада, сидя на кресле, было максимально расслабляющим, 
граница между синими и красными должна быть на одинаковом расстоянии L от него. 
 
Василий нанял садовника для создания сада. Садовник закупил одинаковое количество красных и синих цветов, Но потом вспомнил последнее 
условие бизнесмена. Ему было жаль выкидывать так много цветов, поэтому он решил что граница между разными цветами должна делить сад 
на две равные по площади части. Тогда он сможет посадить все цветы. Не владея высокими знаниями геометрии, садовник смог посчитать 
радиус сада R, но расстояние от кресла на веранде до центра сада он попросил посчитать Вас. 
 
Входной файл содержит целое число R - радиус сада (1 < R < 10000) и целое число L - расстояние от кресла до границы между синими и красными 
цветами (1 < L < 10000). Ваша задача вывести расстояние от кресла на веранде до центра сада. Ответ округлите до сотых, или выведите -1, 
если построить такой сад невозможно. Обратите внимание, что кресло может находится как за пределами сада, так и в саду. 

Входные данные: 
12 15 
 
Выходные данные: 
13.262 
 
 
Входные данные: 
100 1 
 
Выходные данные: 
-1 


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

Вдохновившись исследованием британских учёных о восприятии человеком текста, Вася решил, что современная письменность нуждается в серьёзном упрощении. В частности, в лексиконе Васи все слова состоят только из букв a, b и c. Кроме того, память у Васи плохая, поэтому Вася помнит лишь слова, которые содержат не более L букв.

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

Британские учёные очень заинтересовались исследованиями Васи. Они вступили с молодым учё- ным в активную переписку, однако, получив очередное Васино сообщение были несколько озадачены тем, что же он имел ввиду. Так как разобраться они так и не смогли, а очередное революционное открытие уже было проанонсировано в СМИ, они решили как-то оценить уровень гениальности автора. Для этого они решили понять, а из какого минимального количества слов может состоять словарный запас Василия?

Формат входных данных
В первой строке входных данных содержится целое число L — максимальная длина слова, кото- рое может содержаться в лексиконе Васи (1 <= L <= 10 000). В следующей строке содержится непустое сообщение, полученное учеными. Длина сообщения не превосходит 20 000 символов.

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

Пример
Ввод:
3
ababaabab

Вывод:
2
aba
ab

Замечание
В первом примере из условия одним из возможных способов проинтерпретировать Васино сооб- щение является: ab aba ab ab.
В процессе ремонта в Лаборатории Информационных Технологий строителям необходимо заменить поврежденные напольные плитки в коридоре лаборатории, который имеет размер 2 × n метров. В распоряжении строителей есть неограниченный запас плиток двух размеров: 1 × 2 метра и 1 × 1 метр. При этом плитки размером 1 × 2 метра перед укладкой разрешается поворачивать на 90 градусов и размещать как вдоль, так и поперек коридора.

Строители уже начали ремонт и уложили в некоторых местах пола коридора k плиток размером 1 × 1. Для завершения ремонта прорабу необходимо подготовить план дальнейших работ. Для этого ему надо решить, каким образом уложить плитки на места, где они еще не уложены. Это можно сделать различными способами и прораб хочет перебрать все варианты и выбрать самый удачный. Перед тем как это сделать, прораб хочет знать, какое количество вариантов ему придется рассмотреть. Это число требуется найти по модулю 109 + 7.

Требуется написать программу, которая по заданной длине коридора n и расположению плиток, которые уже уложены, определяет количество способов укладки плиток на оставшиеся места. Ответ необходимо вывести по модулю 109 + 7.

Формат входного файла
Первая строка входного файла содержит два целых числа: n — длину коридора и k — количество уже уложенных единичных плиток (1 ≤ n ≤ 100 000, 0 ≤ k < 2n). Последующие k строк содержат по два целых числа xi и yi , которые задают позиции уже уложенных единичных плиток, i-я плитка уложена на xi-м метре коридора в yi-м ряду (1 ≤ xi ≤ n, 1 ≤ yi ≤ 2).

Формат выходного файла
Выходной файл должен содержать одно целое число — количество способов укладки плиток в коридоре, взятое по модулю 109 + 7.
Ввод Вывод
2 0 7
3 0 22
3 1
2 1
8


У Джона Доу есть массив a из n элементов. Джон хочет найти величину , то есть сумму квадратов разностей элементов массива по всем возможным парам i, j.

Например для массива {1, 2, 3} такая величина будет равна (1 - 1)2 + (1 - 2)2 + (1 - 3)2 + (2 - 1)2 + (2 - 2)2 + (2 - 3)2 + (3 - 1)2 + (3 - 2)2 + (3 - 3)2 = 0 + 1 + 4 + 1 + 0 + 1 + 4 + 1 + 0 = 12

Найдите остаток от деления S на 108.

Напомним, как работать с остатками от деления. Остаток от деления числа a на число b обозначим как . Верны следующие соотношения:

  • (для a ≥ b).

 

К примеру, вы хотите посчитать величину . Перемножить эти три числа в стандартном типе данных вам не удастся, но можно воспользоваться первым соотношением и посчитать сначала Теперь можно перемножить получившееся число и 107 + 3 и получить .

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

В первой строке записано целое число n (1 ≤ n ≤ 106) — количество элементов массива. Во второй строке через пробел записаны n целых чисел a1, ..., an (1 ≤ ai ≤ 109).

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

Выведите остаток от деления S на 108.

Примеры тестов

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

3
1 2 3
Выходные данные
12
Входные данные
5
100 1 9 1 3
Выходные данные
74928
Входные данные
2
1000000000 1
Выходные данные
2

Примечание

Тесты поделены на несколько групп, но оцениваются отдельно.

  • n, ai ≤ 1000 – 10 баллов
  • n ≤ 5000 – 10 баллов
  • n ≤ 106 ai ≤ 5000 – 30 баллов
  • Без дополнительных ограничений — 50 баллов

Например, если вы решили задачу для n ≤ 5000 и произвольных ai вы получите 20 баллов (первая и вторая группы).


What’s this
 
После посадки на Марс учёные нашли странную систему пещер, соединённых туннелями. И учёные начали исследовать эту систему, используя управляемых роботов. Было обнаружено, что существует ровно один путь между каждой парой пещер. Но потом учёные обнаружили специфическую проблему. Иногда в пещерах происходят небольшие взрывы. Они вызывают выброс радиоактивных изотопов и увеличивают уровень радиации в пещере. К сожалению, роботы плохо выдерживают радиацию. Но для исследования они должны переместиться из одной пещеры в другую. Учёные поместили в каждую пещеру сенсор для мониторинга уровня радиации.  Теперь они каждый раз при движении робота хотят знать максимальный уровень радиации, с которым придётся столкнуться роботу во время его перемещения. Как вы уже догадались, программу, которая это делает, будете писать вы.

Формат входных данных
Первая строка содержит одно целое число N (1≤ N ≤ 100000) — количество пещер. Следующие N −1 строк описывают туннели. Каждая из этих строк содержит два целых числа — ai и bi (1 ≤ ai,bi N), описывыющие туннель из пещеры с номером ai в пещеру с номером bi. Следующая строка содержит целое число Q (1 ≤ Q ≤ 100000), означающее количество запросов. Далее идут Q запросов, по одному на строку. Каждый запрос имеет вид «C U V », где C — символ «I» либо «G», означающие тип запроса (кавычки только для ясности). В случае запроса «I» уровень радиации в U-й пещере (1 ≤ U N) увеличивается на V (0 ≤ V ≤ 10000). В случае запроса «G» ваша программа должна вывести максимальный уровень радиации на пути между пещерами с номерами U и V (1≤ U,V N) после всех
увеличений радиации (запросов «I»), указанных ранее. Предполагается, что изначальный уровень радиации равен 0 во всех пещерах, и он никогда не уменьшается со временем (потому что период полураспада изотопов много больше времени наблюдения).
Формат выходных данных
Для каждого запроса «G» выведите одну строкусодержащую максимальный уровень радиации

На вход программе сначала подается число участников олимпиады N. В каждой из следующих N строк находится результат одного из участников олимпиады в следующем формате:
<Фамилия> <Имя> <класс> <баллы>,

где <Фамилия> – символьная строка (не более 20 символов);
- <Имя> – символьная строка (не более 15 символов);
- <класс> – число от 7 до 11;
- <баллы> – целое число набранных участником баллов. 

<Фамилия> и <Имя>, <Имя> и <класс>, а также <класс> и <баллы> разделены одним пробелом.

Пример входной строки:
Семенов Егор 11 225

Победителем олимпиады становится участник, набравший наибольшее количество баллов, при условии, что он набрал более 200 баллов. Если такое количество баллов набрали несколько участников, то все они признаются победителями при выполнении условия, что их доля не превышает 20% от общего числа участников.
Победителем олимпиады не признается никто, если нет участников, набравших больше 200 баллов, или больше 20% от общего числа участников набрали одинаковый наибольший балл.
Напишите эффективную по времени работы и по используемой памяти программу, которая будет определять фамилию и имя лучшего участника, не ставшего победителем олимпиады. Если таких участников несколько, т.е. если следующий за баллом победителей один и тот же балл набрали несколько человек, или, если победителей нет, а лучших участников несколько (в этом случае именно они являются искомыми), то выдается только количество искомых участников. Гарантируется, что искомые участники (участник) имеются. 

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

Пример выходных данных (один искомый участник):
Семенов Егор
 
Второй вариант выходных данных (несколько искомых участников):
12
 

Ёлочная гирлянда состоит из n лампочек, пронумерованных от 1 до n. Каждая лампочка либо горит (обозначим «1»), либо не горит («0»). Текущее состояние гирлянды задано строкой a.

Монтажник Егор хочет, чтобы гирлянда выглядела по-праздничному — в виде строки b (тоже из нулей и единиц, той же длины n). Менять строку b нельзя — это «образец».

С гирляндой a Егор может выполнять две операции:

  • Переключить одну лампочку. Выбрать позицию i (1 ≤ i ≤ n) и поменять её состояние (0 → 1 или 1 → 0). Стоимость такой операции — 1 рубль.
  • Поменять местами две лампочки. Выбрать две позиции i и j (1 ≤ i, j ≤ n) и поменять состояния этих лампочек местами. Стоимость такой операции — |i - j| рублей, то есть расстояние между позициями.

Помогите Егору найти минимальную суммарную стоимость, с которой можно превратить гирлянду a в гирлянду b.
 

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

В первой строке — целое число n (1 ≤ n ≤ 106) — количество лампочек в гирлянде.

Во второй строке — строка a длины n, состоящая только из символов «0» и «1», — текущее состояние гирлянды.

В третьей строке — строка b длины n, состоящая только из символов «0» и «1», — желаемое состояние гирлянды.
 

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

Одно целое число — минимальная суммарная стоимость, которую нужно заплатить, чтобы превратить a в b.

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