2025/26, 9-профиль, задание 9 - Два указателя

A: Бал (С++)

На бал пришли \(n\) мальчиков и \(m\) девочек. Пара из мальчика и девочки будет красиво смотреться, если величины их ростов отличаются не более чем на 1. Определите, какое максимальное число красивых пар можно составить.

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

Программа получает на вход число \(n\), \(1\le n \le 10^5\). В следующей строке записаны через пробел \(n\) положительных чисел \(a_i\), не превосходящих \(10^9\), — значения роста мальчиков. Затем дано число \(m\), \(1\le m \le 10^5\). В следующей строке записаны через пробел \(m\) положительных чисел \(b_i\), не превосходящих \(10^9\), — значения роста девочек.

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

Программа должна вывести одно целое число — максимальное число красивых пар.

Пример

ВводВывод
3
180 176 175
4
175 174 178 172
2

B: Сиртаки (С++)

В танце сиртаки участники становятся в круг и кладут руки на плечи соседей. Поэтому танцевать сиртаки неудобно, если рост участников сильно различается. Будем считать группу танцоров подходящей для сиртаки, если рост любых двух танцоров в группе отличается не более, чем на 15%, то есть \(h_i\le 1.15 h_j\).

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

Программа получает на вход число \(n\), \(1\le n \le 10^5\). В следующей строке записаны через пробел \(n\) положительных чисел \(h_i\), не превосходящих \(10^9\) — значения роста танцоров.

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

Программа должна вывести единственное число — максимальное количество танцоров, которых можно выбрать для cиртаки.

Пример

ВводВывод
7
180 175 150 195 165 190 160
4

C: Полоска (C++)

У вас есть полоска клетчатой бумаги длиной \(n\) клеток и шириной в 1 клетку. Каждая клетка покрашена либо в чёрный, либо в белый цвет. Вы можете покрасить любую белую клетку в чёрный цвет, после чего вам нужно вырезать кусок из \(k\) подряд идущих чёрных клеток. Определите, какое наименьшее число клеток вам нужно перекрасить.

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

Программа получает на вход строку из букв «B» и «W», означающих чёрную и белую клетки. Длина строки не превосходит \(10^6\). В следующей строке записано одно положительное число \(k\), не превосходящее длины данной строки.

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

Программа должна вывести одно число — минимальное количество клеток, которые нужно перекрасить.

Пример

ВводВывод
BWBWBBWBW
4
1

D: Полоска-2 (C++)

У вас есть полоска клетчатой бумаги длиной \(n\) клеток и шириной в 1 клетку. Каждая клетка покрашена либо в чёрный, либо в белый цвет. Вы можете не более \(k\) клеток покрасить в чёрный цвет, после чего вам необходимо вырезать непрерывный кусок максимального размера, содержащий только чёрные клетки. Определите длину этого куска.

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

Программа получает на вход строку из букв «B» и «W», означающих чёрную и белую клетки. Длина строки не превосходит \(10^6\). В следующей строке записано одно целое неотрицательное число \(k\).

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

Программа должна вывести одно число — максимальную длину чёрной полоски, которую можно получить перекрашиванием не более \(k\) клеток.

Пример

ВводВывод
BWBWBBWBW
1
4

E: Байдарочный поход (Python)

В одной байдарке могут плыть один или два человека, если их масса не превосходит значения \(w\). \(n\) человек собираются в поход, какое минимальное число байдарок им необходимо для этого?

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

Первая строка входных данных содержит два числа \(n\) (\(1\le n\le 10^{5}\)) и \(w\) (\(1\le w\le 10^9\)). Во второй строке записаны \(n\) положительных чисел, не превосходящих \(w\), — веса людей.

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

Программа должна вывести одно число — минимальное количество необходимых байдарок.

Пример

ВводВывод
6 135
50 120 74 60 100 82
4

F: Конфеты (C++)

На столе лежат \(n\) конфет в ряд, масса \(i\)-й конфеты равна \(w_i\). Аня может съесть любое (в том числе ноль) конфет слева, то есть съесть целиком некоторый префикс последовательности. Боря может съесть любое (в том числе ноль) конфет справа, то есть съесть целиком некоторый суффикс последовательности.

Первая строка входных данных содержит положительное число \(n\le10^5\) — количество конфет. В следующей строке записаны \(n\) целых положительных чисел, не превосходящих \(10^9\) — веса конфет.

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

Они хотят съесть конфеты честно, то есть суммарные массы съеденных ими конфет должны быть равны. При этом они хотят съесть как можно больше конфет. Определите, сколько конфет они съедят.

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

Программа должна вывести два числа: количество конфет, которые съест Аня, и количество конфет, которые съест Боря.

Пример

ВводВывод
9
7 3 20 5 15 1 11 8 10
3 4

G: Знакочередующаяся последовательность (C++)

Дана последовательность ненулевых целых чисел \(a_1\), \(a_2\), ..., \(a_n\). Подпоследовательностью называется последовательность, которая получается вычеркиванием из данной последовательности некоторого количества элементов.

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

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

Программа получает на вход число \(n\le 10^5\). В следующей строке даны \(n\) целых ненулевых чисел, не превосходящих по модулю \(10^6\) — элементы последовательности.

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

Программа должна вывести элементы искомой подпоследовательности.

Пример

ВводВывод
5
1 2 3 -1 -2
3 -1 

H: Минимальная подстрока (Python)

Дана строка состоящая только из символов «a», «b», «c». Найдите в ней минимальную по длине непрерывную подстроку, содержащую каждый из этих символов хотя бы по одному разу.

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

Программа получает на вход строку из символов «a», «b», «c», длина которой не превосходит \(10^5\).

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

Программа должна вывести два числа: длину наименьшей подходящей подстроки и номер её первого символа (в нумерации с единицы). Если ответов несколько — выведите тот, у которого меньше номер начального символа. Если ответа нет, выведите одно число 0.

Пример

ВводВывод
aababaacca
4 5

I: Максимальная подстрока (C++)

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

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

Программа получает на вход положительное число \(k\), в следующей строке дана строка из строчных английский букв, длина строки не превосходит \(3\times 10^6\).

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

Программа должна вывести два числа: длину наибольшей подходящей подстроки и номер её первого символа (в нумерации с единицы). Если ответов несколько — выведите тот, у которого меньше номер начального символа.

Пример

ВводВывод
2
abacaba
5 2