Processing math: 82%

3-й этап Республиканской олимпиады по информатике 2022-2023, 2й тур


Задача D. Две очереди

Ограничение по времени:
1 секунда
Ограничение по памяти:
256 мегабайт

Есть две очереди. В первой стоят n людей, во второй стоят m людей. В первой очереди обслуживают одного человека за A минут, во второй очереди обслуживают одного человека за B минут. Отсчет времени начинается с минуты 1. Каждую минуту последовательно происходит следующее:
  1. Если первый человек в первой очереди обслужен, то он уходит из очереди.
  2. Если первый человек во второй очереди обслужен, то он уходит из очереди.
  3. Последний человек в первой очереди перемещается в конец второй очереди если его порядковый номер во второй очереди окажется меньше чем его номер в первой очереди.
  4. Последний человек во второй очереди перемещается в конец первой очереди если его порядковый номер в первой очереди окажется меньше чем его номер во второй очереди.
Сообщите первый момент времени T когда все люди будут обслужены.
Формат входного файла
В первой и единственной строке входного файла даны четыре целых числа n, m, A и B (1<=n,m,A,B<=105).
Формат выходного файла
Выведите одно целое число — первый момент времени T когда все люди будут обслужены.
Примеры:
Вход
2 3 1 2
Ответ
4
Вход
5 6 4 4
Ответ
24
Вход
3 1 2 4
Ответ
8
Замечание
Разберем первый пример. Минута 1. Первый человек из первой очереди обслужен и уходит из очереди. Теперь n=1, m=3. Последний человек во второй очереди переходит в конец первой очереди. Теперь n=2, m=2. Минута 2. Первый человек из первой очереди обслужен и уходит из очереди. Теперь n=1, m=2. Первый человек из второй очереди обслужен и уходит из очереди. Теперь n=1, m=1. Больше ничего не происходит. Минута 3. Первый человек из первой очереди обслужен и уходит из очереди. Теперь n=0, m=1. Больше ничего не происходит. Минута 4. Первый человек из второй очереди обслужен и уходит из очереди. Теперь n=0, m=0. Все люди обслужены, значит ответ T=4.

комментарий/решение Проверить мое решение

Задача E. Покраска графа

Ограничение по времени:
1 секунда
Ограничение по памяти:
256 мегабайт

Дан ориентированный ацикличный граф из N вершин и M ребер. Вершины пронумерованы целыми числами от 1 до N. Причем в графе нет ребра из вершины 1 в вершину N. Все вершины изначального белого цвета. Мансуру нужно покрасить ровно B вершин в черный цвет. После покраски удаляются все ребра у которых оба конца одного цвета. Помогите Мансуру покрасить B вершин таким образом, чтобы нельзя было добраться из 1 в N после удаления всех ребер у которых оба конца одного цвета.
Формат входного файла
Каждый тест содержит несколько наборов входных данных. Первая строка содержит одно целое число T(1<=T<=100) — количество входных данных. Первая строка каждого набора входных данных содержит три целых числа N,M и B(3<=N<=105, 0<=M<=min(2105,N(N1)2), 1<=B<=N). Следующие M строк каждого набора входных данных содержат по два целых числа u и v(1<=u,v<=N, uv, (u,v)(1,N)) — задающие ориентированное ребро из вершины u в вершину v. Гарантируется, что в графе нет цикл и повторяющихся ребер. Cумма N по всем наборам входных данных не превосходит 106. Cумма M по всем наборам входных данных не превосходит 106.
Формат выходного файла
Если невозможно покрасить нужным образом, выведите <<-1>>. Иначе, выведите B различных целых числа — номера вершин которые нужно покрасить в черный цвет. Если есть несколько возможных ответов, выведите любую из них.
Пример:
Вход
2
15 16 5
1 2
1 3
1 4
1 5
2 7
3 7
4 8
5 7
7 9
8 9
9 10
9 11
9 12
10 15
11 15
12 15
3 2 2
2 3
1 2
Ответ
1 8 10 7 9
2 3
Замечание


комментарий/решение Проверить мое решение

Задача F. XOR-сумма

Ограничение по времени:
2 секунды
Ограничение по памяти:
512 мегабайт

Дан массив a из n целых положительных чисел. Для каждого целого числа k от 1 до m найдите значение (a1mod. Здесь \oplus обозначает операцию побитового XOR или исключающего ИЛИ. Данная операция существует во всех современных языках программирования, например, в языках C++,Python и Java она обозначена как <<^>>, в Pascal — как <>. Здесь \bmod обозначает остаток от деления. То есть, (a \bmod b) — остаток от деления числа a на число b.
Формат входного файла
В первой строке задаются два целых числа n и m (1 <= n, m <= 500\,000). Во второй строке задаются массив a_1, a_2, \ldots, a_n (1 <= a_i <= m).
Формат выходного файла
Выведите m целых чисел через пробел, где k-е число равно значению (a_1 \bmod k) \oplus (a_2 \bmod k) \oplus \ldots \oplus (a_n \bmod k).
Примеры:
Вход
4 5
2 5 4 2
Ответ
0 1 3 1 4
Вход
10 12
1 2 4 8 9 10 11 12 3 5
Ответ
0 1 1 1 0 1 0 5 9 3 11 1

комментарий/решение Проверить мое решение