Муниципальный этап, 7–8 классы всероссийской олимпиады по информатике: 7 задач с официальным разбором, к 3 из них наше решение на C++.

К задаче 1

Муниципальный этап ВсОШ по информатике 2023/24, 7–8 классы.

Задачи тура

Отмечайте решённые: 0 из 7

1. Абстрактный плакат

геометрия, конструктив

Для оформления фасада музея абстрактного искусства необходимо изготовить плакат, на котором изображено несколько красных линий. На рисунке изображён плакат и нарисована система координат.

Плакат из красных линий на координатной сетке
Плакат из красных линий на координатной сетке

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

В одной строке записывается одна команда — четыре числа через пробел.

Например, для рисования такого плаката

Пример плаката из двух прямоугольников
Пример плаката из двух прямоугольников

достаточно двух команд устройства. Один из возможных вариантов решения для этого примера:

1 1 5 2
3 1 4 4

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

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

Скачать файл в формате Microsoft Excel.

Скачать файл в формате Libre Office Calc.

Официальный разборСначала попробуйте решить сами

2. Максимальный поток

графы, максимальный поток

Дана сеть из нескольких труб, которые соединяются между собой в узлах, обозначенных буквами от «A» до «I». Для каждой трубы задана пропускная способность этой трубы (числа, написанные на трубах) — максимальный объём воды, который может пройти через эту трубу за единицу времени. Вода может течь по трубе в любом направлении.

Сеть труб с пропускными способностями
Сеть труб с пропускными способностями

Вам необходимо организовать передачу максимального объёма воды из узла «A» (исток) в узел «I» (сток).

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

1. Объём воды, который протекает по трубе, не должен превышать пропускной способности этой трубы.

2. По каждой трубе вода течёт в одном направлении.

3. Для всех вершин, кроме истока «A» и стока «I», объём втекающей в узел воды должен быть равен объёму вытекающей из узла воды.

Чем больше будет пропускная способность вашей схемы (объём воды, передаваемый из «A» в «I» за единицу времени), тем больше баллов вы получите.

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

Например, запись

A B 5

обозначает, что по трубе из узла «A» в узел «B» будет протекать 5 единиц объёма воды в единицу времени.

Официальный разборСначала попробуйте решить сами

3. Телефонный справочник

строки, жадный алгоритм

Саша недавно начала регистрировать компанию по разработке чат-ботов и уже подала необходимые документы. Но добрые люди рассказали Саше, что в телефонном справочнике компании располагаются в лексикографическом (алфавитном) порядке их названий. Что такое телефонный справочник, Саша не знает, но решила учесть рекомендации и поменять название своей компании, чтобы оно было как можно раньше в телефонном справочнике. Поскольку Саша уже подала документы, она не может полностью поменять название компании, но может сказать, что допустила опечатку, и поменять любые две буквы в названии местами. Помогите Саше выбрать новое название компании.

Вам предлагается 4 варианта названия:

1. cfwvfu

2. tbzttbetcb

3. aefhfifjfkflzhz

4. abcdfjhklmnqrtuvwzyx

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

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

Запишите ответы для каждого из четырёх названий, каждый ответ — в отдельной строке. В каждой строке должны быть только английские буквы, номер задания указывать не нужно. В вашем ответе должно быть ровно 4 строки. Если вы не можете дать ответ на какое-то задание, напишите любую строку из английских букв, например, “a”.

Официальный разборСначала попробуйте решить сами

4. Большая команда

бинарный поиск, электронные таблицы

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

Теперь перед организаторами стоит сложная задача — необходимо определить такое максимальное значение , чтобы из всех школ города можно было собрать команд, в каждой из которых было бы участников из одной школы. Например, если в какой-то школе имеется 500 учащихся и размер команды равен 20, то из этой школы смогут принять участие 25 команд, а если взять равным 21, то возможно собрать только 23 команды из этой школы.

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

Данные для этой задачи находятся в документе электронной таблицы.

Скачать таблицу в формате Microsoft Excel.

Скачать таблицу в формате Libre Office Calc.

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

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

Официальный разборСначала попробуйте решить сами

5. Ферзь

0.5 секунд, математика

Пётр любит шахматы и математику. Он знает, что самая мощная фигура в шахматах — это ферзь, потому что он ходит и как ладья, на все клетки на одной с ним вертикали или горизонтали, и как слон, на все клетки по диагоналям. Ферзя можно поставить на доску так, чтобы он контролировал (то есть мог переместиться в эти клетки за один ход) целых 27 клеток доски!

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

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

Первая строка входных данных содержит целое число () — размер доски по вертикали.

Вторая строка входных данных содержит целое число () — размер доски по горизонтали.

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

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

Обратите внимание на то, что ответ в этой задаче может превышать возможное значение 32-битной целочисленной переменной, поэтому необходимо использовать 64-битные целочисленные типы данных (тип long long в языке C++, тип int64 в Pascal, тип long в Java и C#).

Система оценки

Решения, правильно работающие, когда и не превосходят , будут оцениваться в 40 баллов.

Решения, правильно работающие, когда и не превосходят , будут оцениваться в 80 баллов.

Замечание

Второй пример из условия приведён на рисунке. Крестиками обозначены клетки, которые контролирует ферзь.

Доска 3×4 с ферзём и клетками под боем
Доска 3×4 с ферзём и клетками под боем
стандартный вводстандартный вывод
8
8
27
стандартный вводстандартный вывод
3
4
9
Официальный разборСначала попробуйте решить сами
Наше решение на C++Полный код на C++17

6. Рамка для рисунка

1 секунда, математика, перебор

У Алексея есть набор, который состоит из палочек длины 1 и палочек длины 2. Палочки можно соединять между собой, либо выстраивая их в линию, либо под прямым углом.

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

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

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

Первая строка входных данных содержит целое число — количество палочек длины 1, .

Вторая строка входных данных содержит целое число — количество палочек длины 2, .

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

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

Обратите внимание на то, что ответ в этой задаче может превышать возможное значение 32-битной целочисленной переменной, поэтому необходимо использовать 64-битные целочисленные типы данных (тип long long в языке C++, тип int64 в Pascal, тип long в Java и C#).

Система оценки

Решения, правильно работающие, когда и не превосходят , будут оцениваться в 20 баллов.

Решения, правильно работающие, когда и не превосходят , будут оцениваться в 40 баллов.

Решения, правильно работающие, когда и не превосходят , будут оцениваться в 60 баллов.

Замечание

В первом примере есть 5 палочек длины 1. Из них можно сложить квадрат со стороной 1, его площадь равна 1, при этом одна палочка останется.

Во втором примере есть 4 палочки длины 1 и 3 палочки длины 2. Из них можно сложить прямоугольник размера .

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

стандартный вводстандартный вывод
5
0
1
стандартный вводстандартный вывод
4
3
6
стандартный вводстандартный вывод
3
0
0
Официальный разборСначала попробуйте решить сами
Наше решение на C++Полный код на C++17

7. Задачи на печать!

1 секунда, жадный алгоритм, разбор случаев

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

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

Условия всех задач распечатываются на принтере в виде нескольких последовательных заданий. Для каждого задания необходимо задать диапазон печати: номера первой и последней страниц, которые будут напечатаны в этом задании (будут напечатаны все страницы в этом диапазоне), а также тип печати — односторонняя или двусторонняя.

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

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

Первая строка входных данных содержит целое число () — количество задач в олимпиаде.

Следующие строк содержат по одному целому числу () — количество страниц в -й задаче.

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

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

Система оценки

Решения, верно работающие, когда все значения отличны от 1, будут оцениваться не менее чем в 30 баллов.

Решения, верно работающие, когда все значения отличны от 2, будут оцениваться не менее чем в 30 баллов.

Решения, верно работающие, когда все значения отличны от 3, будут оцениваться не менее чем в 30 баллов.

Решения, верно работающие, когда , будут оцениваться не менее чем в 50 баллов.

Решения, верно работающие, когда , будут оцениваться не менее чем в 80 баллов.

Замечание

В первом примере на олимпиаду предложены 4 задачи, условия которых состоят из 1, 3, 2 и 1 страниц соответственно. Всего необходимо распечатать 7 страниц. Их можно распечатать за два задания: страницы 1–2 — односторонней печатью (это единственная страница первой задачи и первая из трёх страниц второй задачи), оставшиеся страницы 3–7 — двусторонней.

Во втором примере на олимпиаду предложены 2 задачи, условия которых состоят из 3 страниц каждая. Всего необходимо распечатать 6 страниц. Их можно распечатать за два задания: страницы 1–1 — односторонней печатью (это первая из трёх страниц первой задачи), оставшиеся страницы 2–6 — двусторонней. При этом в первой задаче первая страница будет напечатана на одной стороне, потому что она напечатана односторонней печатью, а во второй задаче последняя страница будет напечатана на одной стороне, потому что в этом задании нечётное число страниц печатается на двух сторонах, поэтому вторая сторона этого листа будет пустой.

стандартный вводстандартный вывод
4
1
3
2
1
2
стандартный вводстандартный вывод
2
3
3
2
Официальный разборСначала попробуйте решить сами
Наше решение на C++Полный код на C++17

Сначала решите сами

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

Готовиться самому

Платформа с задачами

1400+ задач с автопроверкой

или
Пробное занятие

Призёр ВсОШ, первое бесплатно