Ваш одногруппник Вася устроился в службу экстренного реагирования МЧС. Когда в городе что-то происходит, люди с места происшествия отправляют в эту службу SMS-сообщения. Если сообщение имеет вид «AAA...!!!!», то есть его можно разбить на две непустые половинки так, что левая состоит только из заглавных букв A, а правая — только из восклицательных знаков, то оно считается паническим, и на место этого происшествия группа реагирования отправляется в первую очередь. Если сообщение не паническое, то группа реагирования отправляется на место этого происшествия только тогда, когда нет других происшествий с паническими сообщениями.
В октябре как всегда внезапно выпал снег, в связи с этим количество происшествий, а значит, и SMS-сообщений, которые нужно обработать Васе, резко увеличилось. Помогите Васе и напишите программу, которая определяет, является SMS-сообщение паническим или нет.
Ввод содержит непустую строку из заглавных и строчных символов латинского алфавита, а также знаков ! и ?. Длина строки не превышает 100.
Выведите «Panic!» (без кавычек), если сообщение паническое, или «No panic» (без кавычек), если оно не паническое.
AAA!!!
Panic!
AAA
No panic
aaa!!!
No panic
Шахтёр Василий заинтересовался криптовалютой SillyCoin. Майнеры этой валюты получают расписание блоков на следующие сутки. Для каждого блока известен промежуток времени, в течение которого его потребуется майнить, и вознаграждение в монетках SillyCoin, которое гарантированно выдаётся, если этот блок непрерывно майнился в указанное время. Майнер решает сам, стоит ли браться за майнинг того или иного блока. Майнинг следующего блока можно начинать в ту же секунду, как закончена обработка предыдущего блока. У Василия всего одного видеокарта, поэтому он не может майнить несколько блоков одновременно. Кроме того, Василию регулярно приходят счета за электричество, которое придётся оплачивать за фактически потраченное на майнинг время по фиксированному тарифу. Василий хочет узнать, выгодно ли ему заниматься майнингом, поэтому он просит вас написать программу, вычисляющую по заданному расписанию блоков максимально возможную выгоду.
В первой строке находятся два целых числа N и C (1 ≤ N < 86 400, 0 ≤ C ≤ 1000), разделённых пробелом, — количество блоков в расписании и стоимость электричества, затрачиваемого за каждую секунду майнинга, в монетках. В следующих N строках содержится расписание блоков на следующие сутки.
В каждой строке через пробел указаны время начала и окончания блока (в формате HH:MM:SS от 00:00:00 до 23:59:59 с разницей минимум в 1 секунду) и вознаграждение P (0 ≤ P ≤ 105) в монетках.
Вывести целое число — максимальное вознаграждение, которое Василий может получить за майнинг. Если майнинг принесёт лишь убытки, следует вывести 0.
4 0
03:00:00 10:10:00 20
01:00:00 02:30:00 50
16:10:00 19:00:00 100
02:30:00 22:00:00 200
250
3 1
16:59:00 17:00:00 100
01:01:01 01:01:11 20
12:00:00 13:00:00 3601
51
4 10
00:00:05 00:01:55 1100
00:00:10 00:00:21 100
00:01:50 00:02:00 80
23:59:00 23:59:05 40
0
Составление кроссвордов — непростая задача. Помимо того, чтобы соблюсти баланс по сложности слов, необходимо уместить слова в ограниченную площадь.
Но и это не всё! Пустого места должно быть не слишком много, но и не слишком мало, чтобы его можно было заполнить рекламой.
Вам даны четыре слова. Сколькими способами можно составить из них кроссворд, чтобы внутри образовалась пустая область в виде прямоугольника, ни одна из сторон которого не равна 0? Каждое слово должно пересекаться с ровно двумя другими словами.
Ввод содержит 4 слова, находящиеся в отдельных строках.
Каждое слово имеет длину от 3 до 100 и состоит только из малых букв латинского алфавита.
Все слова различны.
Выведите искомое количество вариантов.
aaa
axa
aya
aza
24
aaaa
abba
baab
bbbb
40
Тёмные времена нависли над ACM-ом. Тысячи команд ACM-щиков вышли на защиту от нападения CTF-щиков. Всего имеется N команд, пронумерованных от 1 до N. Каждая команда, по традиции, состоит из трёх человек. Каждому человеку присвоили параметр ACM-овости, выраженный целым числом.
ACM-щики хотят создать армию, выбрав из каждой команды ровно по одному человеку так, чтобы суммарная ACM-овость была как можно больше, но при этом делилась нацело на число D.
Так как ACM-щики по своей натуре любят усложнять задачи не пойми зачем, они решили рассмотреть несколько отрезков [li, ri], составляя армию лишь из команд с номерами из этого отрезка.
Собственно, ваша команда отвечает за обработку этих запросов. На горизонте уже видны флаги, у вас осталось меньше пяти часов!
Первая строка содержит два целых числа N (1 ≤ N ≤ 50 000) и D (1 ≤ D ≤ 50).
В следующих N строках содержится описание каждой команды в виде трёх целых чисел. ACM-овость каждого человека является целым числом от 0 до 109.
Следующая строка содержит целое число M — количество отрезков (1 ≤ M ≤ 300 000).
В следующих M строках идёт описание каждого запроса в виде пары чисел li и ri (1 ≤ li ≤ ri ≤ N).
На каждый отрезок выведите в отдельной строке максимальную сумму, которую можно на нём собрать. Если же сумму, делящуюся на D собрать невозможно, выведите «-1» (без кавычек).
2 2
0 1 3
1 2 3
3
1 1
2 2
1 2
0
2
6
3 3
0 3 6
1 4 7
1 2 3
4
1 1
1 2
1 3
2 2
6
-1
15
-1
В бесконечной таблице по номеру строки и столбца определить элемент
Два натуральных числа a, b — номер строки и столбца соответственно. Числа не превосходят 109.
Выведите одно натуральное число — ответ на задачу.
2 3
8
Узнав о ваших выдающихся успехах в программировании, к вам обратились представители Федеральной службы государственной статистики. Эта служба отслеживает и формирует статистическую информацию по множеству показателей: миграция, прирост населения, средняя заработная плата и т.д.
В каждом крупном городе есть региональное отделение этой службы. Региональные отделения ежедневно отслеживают значения показателей и записывают их в базу данных. Например, 21 октября в Красноярск прибыло 100 человек для участия в олимпиаде по программированию. А 23 октября 90 человек уехали обратно (кому-то так понравилось в Красноярске, что они решили тут остаться).
Значения показателей сохраняются не каждый день. Например, 22 октября никто не уезжал, так как все участвовали в олимпиаде. А некоторые показатели вообще считаются только по рабочим дням или по выходным.
Ваша задача - для существующей базы данных разработать систему аналитических отчетов. Возможно эти отчеты будут показывать самому президенту!
Первая строка содержит целое число N — количество городов с региональными отделениями службы. Далее идет N наборов данных для каждого города.
Первая строка набора данных для города содержит название города и количество показателей A[i], отслеживаемых для этого города. Далее идет A[i] наборов данных для каждого показателя.
Первая строка набора данных для показателя содержит название показателя и количество дат, на которые известны значения этого показателя. В следующих строках идут пары - дата в формате YYYY-MM-DD и значение (целое число, по модулю не более 10 000).
Названия городов и показателей — непустые строки из заглавных и строчных латинских букв, не более 10 символов. Всего в базе хранится не более 100 000 значений.
После описания базы данных идет целое число M — количество требуемых отчетов (не более 100). Описание параметров каждого отчета состоит из 6 строк:
Для каждого отчеты вывести Report < index > : , где < index > — порядковый номер отчета, начиная с единицы.
Далее для каждого объекта/показателя в отчете в отдельной строке вывести его название и итоговое значение. Все строки должны быть отсортированы в соответствии параметрами отчета. Если за требуемый период нет ни одного значения показателя - вместо значения вывести символ «-».
2
Krsk 3
Arrive 1
2017-10-21 100
Depart 1
2017-10-23 90
Increase 3
2017-10-21 100
2017-10-22 0
2017-10-23 -90
Irk 2
Depart 1
2017-10-20 70
Arrive 1
2017-10-24 80
2
indicator
Increase
all
2017-10-20 2017-10-23
sum
value desc
city
Irk
2 Increase Arrive
2017-10-20 2017-10-24
max
name
Report 1:
Krsk 10
Irk -
Report 2:
Arrive 80
Increase -
Проснувшись ранним утром, Сашка понял, что давно не проведывал своего старого друга - Витальку. Решив не откладывать это дело на следующий день, он начал собираться в гости. Сашка уже стоял на пороге своей квартиры, как понял, что у него нет подарка! Зная слабость Витальки к цифрам, он решил подарить ему самую часто встречающуюся цифру в записи чисел от 1 до N, причем если таких несколько, было решено взять максимальную. Сможете ли Вы определить, какую цифру подарил Сашка своему другу?
В единственно строке задано целое число N (1 ≤ N ≤ 10100000).
Выведите цифру, которую подарил Сашка.
100
1
99
9
Разметка HTML содержит ноль или более вложенных элементов и текст (в рамках условия дана упрощенная версия реального HTML, и он всегда корректен):
1. <html>
2. <input type="button" id="x" />
3. <div id="x"class='cls'p="<i/>">
4. hello <b>world</b> id='x'
5. </div>
6. </html>
HTML-код может содержать символы английского алфавита, символы "<>=/", а также кавычки ' и ". Также так называемые пробельные символы: пробелы, переводы строк и табуляцию. Все входные символы в задаче будут в нижнем регистре.
В данном примере веб-страница содержит элементы, обозначаемые тегами <html>, <input>, <div>, <b>, а также текст "hello", "world" и "id='x'" внутри элементов. Теги состоят из объявления тега и опционально, закрытия тега. Рассмотрим тег tag:
Вам нужно написать программу, которая по заданному HTML-коду и трем типам селекторов выдаст количество элементов на странице, соответствующих селекторам:
Первая строка содержит число n - количество селекторов (как минимум один). Далее следуют n строк без пробелов в начале и конце, которые обозначают селекторы s1, ..., sn, по которым Вам нужно сделать запросы. Селекторы содержат один или более символов английского алфавита и/или символы ".#'. Далее до конца входа находится непустой HTML-код. Общая длина входных данных не превышает 5 000 символов. Все символы во входе находятся в нижнем регистре.
Для каждого запроса s1, ..., sn напечатайте ответ на отдельной строке, содержащий селектор и количество элементов HTML-страницы, ему соответствующих. См. пример выходных данных.
5
html
#x
.cls
#fakeid
i
<html>
<input type="button" id="x" />
<div id="x"class='cls'p="<i/>">
hello <b>world</b> id='x'
</div>
</html>
Selector "html": found 1 elements
Selector "#x": found 2 elements
Selector ".cls": found 1 elements
Selector "#fakeid": found 0 elements
Selector "i": found 0 elements
Обратите внимание, что в качестве примера входных данных используется HTML-страница из условия.
Это интерактивная задача.
В недалёком будущем OpenAI бот уже выигрывает у человека почти во всех играх. Чтобы не дать боту захватить мир вам нужно написать программу, которая даст отпор при игре в классические крестики-нолики.
Напомним правила этой игры: игроки ходят по очереди, выставляя на клетчатом поле 3 на 3 свой символ (X или O — заглавные латинские буквы). Ходить можно только в свободную клетку. Если после хода образовалось 3 одинаковых символа в ряд (по вертикали, горизонтали или диагонали), игрок, которому принадлежит символ, выигрывает. Если такого не произошло, но при этом нет свободных клеток, то в игре объявляется ничья.
OpenAI бот всегда играет за нолики, Вы — за крестики. Ваша цель — не проиграть боту, glhf!
В самом начале в первой строке ввода задаётся, кто ходит первым.
Далее происходит общение. Если ход за ботом, то он сообщает вам координаты клетки, в которую походил в виде пары чисел r и c, означающих номер строки и столбца. Строки нумеруются от 1 до 3 сверху вниз, а столбцы от 1 до 3 слева направо. Каждый ход выводится в отдельной строке, числа разделены одним пробелом. Гарантируется, что ходы бота корректны.
Если ход за вами, то Вы должны вывести в аналогичном формате координаты клетки хода.
Как только игра заканчивается, вам немедленно сообщается результат игры в виде строки «WIN» (вы выиграли), «LOSE» (вы проиграли) или «DRAW» (ничья).
Если вы проиграли или один из ваших ходов является некорректным, вам будет засчитан неправильный ответ на тест.
X
1 3
2 3
WIN
1 1
2 1
3 1
O
1 1
3 1
2 3
1 2
2 2
DRAW
3 3
1 3
2 1
3 2
Для корректной работы программы после каждой операции вывода данных вам необходимо выводить перенос строки, а также очищать буфер вывода, то есть делать следующие операции:
Андрей любит строки, которые состоят из круглых скобок, но еще больше он любит заменять скобки на точки.
У него есть строка длины N, к которой он применяет M операций. Каждая операция задается двумя натуральными числами li и ri, в результате операции в подстроке slisli + 1, ..., sri самая длинная правильная скобочная подпоследовательность (далее ПСП) заменяется на точки (каждая скобочка заменяется на точку).
Андрей хочет себя проверить и просит вас помочь ему: подсчитать сколько скобок после каждой операции были заменены на точки.
Если в подстроке есть несколько ПСП максимальной длины, то выбирается наименьшая. Правило сравнения следующие: пусть a1, a2, ... , al — позиции открывающихся скобок первой ПСП, а c1, c2, ..., cl — позиции открывающихся скобок второй ПСП. Считается, что первая ПСП меньше второй, если существует k (1 ≤ k ≤ l), такое что ai = ci (1 ≤ i < k) и ak > ck.
Если позиции открывающихся скобок обоих ПСП совпали, то сравниваются позиции закрывающихся скобок по следующему правилу: пусть b1, b2, ..., bl — позиции закрывающихся скобок первой ПСП, а d1, d2, ..., dl — позиции закрывающихся скобок второй ПСП. Считается, что первая ПСП меньше второй, если существует k (1 ≤ k ≤ l), такое что bi = di (1 ≤ i < k) и bk < dk.
На первой строке задается исходная строка S длины N (1 ≤ N ≤ 5 × 105), которая состоит из открывающихся и закрывающихся круглых скобок.
На второй строке задается натуральное число M (1 ≤ M ≤ 5 × 105) — количество операций.
В следующих M строках задаются операции, каждая строка состоит из двух натуральных чисел li и ri (1 ≤ li ≤ ri ≤ N) — левая и правая граница подстроки соответственно.
Для каждой операции на отдельной строке выведите единственное число — число скобок, которые были заменены на точки.
(((())()))
3
4 9
2 8
1 10
4
2
4
У Буратино было N яблок. Некто дал Буратино A яблок. Буратино съел B яблок. Сколько яблок осталось у Буратино?
Два натуральных числа A и B (1 ≤ A, B ≤ 1015)
В общем виде выведите сколько яблок осталось у Буратино, при этом опускайте незначащую часть, если она есть.
2 1
N+1
2 3
N-1