Темы
    Информатика(2656 задач)
---> 167 задач <---
Источники --> Командные олимпиады --> Командные чемпионаты школьников Санкт-Петербурга по программированию
    1999(5 задач)
    2000(7 задач)
    2001(8 задач)
    2002(8 задач)
    2003(9 задач)
    2004(9 задач)
    2005(10 задач)
    2006(10 задач)
    2007(10 задач)
    2008(9 задач)
    2009(10 задач)
    2010(10 задач)
    2011(9 задач)
    2012(10 задач)
    2013(10 задач)
    2014(11 задач)
    2015(11 задач)
    2016(11 задач)
Страница: << 19 20 21 22 23 24 25 >> Отображать по:
ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
256 megabytes

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

Отправив несколько сообщений, Джек заметил, что ноутбук, а точнее его клавиатура, работает не так, как он ожидал. В процессе ввода сообщения у ноутбука иногда внезапно срабатывает клавиша «Home», в результате чего курсор ввода перемещается в начало строки. Так, например, если у Джека в процессе ввода строки «irailikeyou» клавиша «Home» сработала после ввода букв «a» и «y», то получится строка «ouilikeyira».

Джек планировал набрать строку \(s\), нажимая по очереди на соответствующие клавиши. Закончив набор, он посмотрел на экран и увидел строку \(t\). Теперь он хочет понять, может ли она быть результатом его ввода, если единственная неисправность его ноутбука — лишние срабатывания клавиши «Home», либо у его ноутбука есть еще проблемы. Помогите Джеку.

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

В первой строке задано число \(n\) — длина строк \(s\) и \(t\) (\(1 \le n \le 5000\)).

Во второй строке задана последовательность маленьких латинских букв длины \(n\) — строка \(s\).

В третьей строке задана последовательность маленьких латинских букв длины \(n\) — строка \(t\).

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

Выведите «Yes», если из строки \(s\) могла получиться строка \(t\), иначе выведите «No».

Замечание

При наборе строки «abc» могут получиться следующие строки: «abc», «bca», «cab», «cba».

ограничение по времени на тест
1.0 second;
ограничение по памяти на тест
256 megabytes

У Тани было \(n\) мячей, она пронумеровала их от \(1\) до \(n\). Но, к сожалению, Таня уронила все мячи в реку и сильно расстроилась.

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

Исключающее или двух чисел обозначается как \(\oplus\) и соответствует операции «xor» в паскале или «^» в других языках. Чтобы вычислить x \(\oplus\) y для двух целых чисел, необходимо сделать следующее: представить каждое из чисел в двоичной системе счисления и сделать \(i\)-й разряд результата единицей, если он равен единице ровно в одном из чисел \(x\) и \(y\). Например, \(3 \oplus 2 = 11_2 \oplus 10_2 = 1_2 = 1, 17 \oplus 5 = 10001_2 \oplus 101_2 = 10100_2 = 20\).

Помогите Тане! Посчитайте сумму по всем парам ее мячей исключающих или их номеров. Таня не любит большие числа, так что ответ необходимо вывести по модулю \(10^9 + 7\). Например, если у Тани было 3 мяча, то искомое значение равно \((1 \oplus 2) + (1 \oplus 3) + (2 \oplus 3) = 3 + 2 + 1 = 6\).

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

В первой строке задано число \(n\) — количество мячей у Тани (\(1 \le n \le 10^9\) ).

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

Выведите сумму по всем парам ее мячей исключающих или их номеров, взятую по модулю \(10^9 + 7\).

ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
256 megabytes

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

Вася не помнит код, но у него есть несколько вариантов. Кроме того, Васе почему-то запомнился факт, что квадрат числа, составленного из первых двух цифр кода, в сумме с квадратом числа, состоящего из последних двух цифр кода, имеет при делении на семь остаток один. То есть, если код представляет собой «ABCD», где «A», «B», «C», «D» — некоторые цифры, тогда \(AB^2 \ + \ CD^2\) имеет остаток 1 при делении на 7. Например, код 2843, является одним из возможных кодов, поскольку \(28^2 \ + \ 43^2 \ = \ 2633 \ = \ 376 \ · \ 7 \ + \ 1\), а 8243 — нет, поскольку \(82^2 \ + \ 43^2 \ = \ 8573 \ = \ 1224 \ · \ 7 \ + \ 5.

У Васи есть несколько вариантов того, каким может быть код. Помогите ему определить, какие из вариантов могут быть кодом от входа в Петин двор.

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

В первой строке входного файла находится число \)t\( (\)1 \le t \le 10 000\() — число вариантов кода, которые помнит Вася. В следующих \)t\( строках содержится по четыре цифры — варианты кода.

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

В выходной файл выведите \)t\( строк. В \)i\(-й строке выведите «YES», если \)i$-й код может быть кодом для входа в Петин двор, иначе выведите «NO».

Примеры
Входные данные
3
2843
8243
0100
Выходные данные
YES
NO
YES
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
256 megabytes

Кроме школы и математического кружка, Вася ходит на шахматный кружок. Но играть в шахматы на обычной доске \(8 \times 8\) ему кажется не очень интересным. Недавно он придумал свою версию шахмат, в которой игра происходит на доске, имеющей другую форму. Васина доска состоит из \(n\) столбцов, \(i\)-й из которых содержит \(a_i\) клеток. Нижние клетки всех столбцов образуют один горизонтальный ряд, причем длины столбцов упорядочены слева направо по невозрастанию. На рисунке ниже приведен пример доски, в которой три столбца, содержащих 5, 2 и 1 клетку, соответственно.

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

Помогите Васе расставить на его доске минимальное число ладей требуемым образом

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

В первой строке входного файла задано целое число \(n\) — количество столбцов доски (\(1 \le n \le 1000\)). Следующая строка содержит \(n\) чисел \(a_1, a_2, \dots , a_n\) — количество клеток в столбцах (\(1 \le a_i \le 1000, a_1 \ge a_2 \ge \dots \ge a_n\)).

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

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

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

Пояснение к примеру

Для приведенных входных данных возможна и следующая расстановка:

Примеры
Входные данные
3
5 2 1
Выходные данные
2
1 1
2 2
ограничение по времени на тест
2.0 second;
ограничение по памяти на тест
256 megabytes

Лорд Петир собирает армию для похода на соседнее королевство. Он хочет, чтобы в его армию вошли все воины каждого из \(n\) городов его королевства. Петир выяснил, что в \(i\)-м городе ищут работу \(a_i\) воинов, которых он может завербовать в свою армию.

Исходно в армии Лорда нет ни одного воина. Чтобы воин вошел в армию, Петир может заплатить этому воину. Для вербовки одного воина из \(i\)-го города, необходимо заплатить ему \(c_i\) золотых монет. При этом воины из больших городов ценят свою работу дороже, поэтому если для \(i\)-го и \(j\)-го города выполнено \(a_i < a_j\), то \(c_i \le c_j\).

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

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

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

В первой строке входного файла находится целое число \(n\) (\(1 \le n \le 1000\)) — количество городов, в которых Лорд Петир намерен набирать себе воинов. В следующих n строках входного файла находится по два целых числа \(a_i\) и \(c_i\) (\(1 \le a_i \le 100, 1 \le c_i \le 10 000\)) — количество воинов в \(i\)-м городе и число монет, которое необходимо заплатить одному воину в этом городе, чтобы он присоединился к армии. Для всех пар \(i\) и \(j\) выполнено условие, что если \(a_i < a_j\), то \(c_i \le c_j\).

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

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

Пояснения к примеру

В приведенном примере Лорду необходимо действовать следующим образом. Сначала он платит 2 монеты воину из второго города, и 3 монеты воину из третьего города, чтобы они присоединились к его армии.

Теперь в армии Лорда 2 воина, а в городах осталось 1, 1 и 3 воина, соответственно. Воины из первого и второго городов бесплатно присоединяются к армии Лорда Петира, в его армии становится 4 воина, после чего и оставшиеся 3 воина из третьего города бесплатно присоединяются к его армии.

Примеры
Входные данные
3
1 1
2 2
4 3
Выходные данные
5

Страница: << 19 20 21 22 23 24 25 >> Отображать по:
Выбрано
:
Отменить
|
Добавить в контест