Вам предлагается два задания с похожими условиями: задание А и задание
Условие
Вам предлагается два задания с похожими условиями: задание А и задание Б. Вы можете решать оба задания или одно из них по своему выбору. Задание Б более сложное, его решение оценивается выше. Итоговая оценка выставляется как максимальная из оценок за задания А и Б. Задание А. Имеется набор данных, состоящий из 6 пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 3 и при этом была максимально возможной. Если получить требуемую сумму невозможно, в качестве ответа нужно выдать 0.Напишите программу для решения этой задачи. В этом варианте задания оценивается только правильность программы, время работы и размер использованной памяти не имеют значения.Максимальная оценка за правильную программу - 2 балла. Задание Б. Имеется набор данных, состоящий из пар положительных целых чисел. Необходимо выбрать из каждой пары ровно одно число так, чтобы сумма всех выбранных чисел не делилась на 3 и при этом была максимально возможной. Если получить требуемую сумму невозможно, в качестве ответа нужно выдать 0.Напишите программу для решения этой задачи.Постарайтесь сделать программу эффективной по времени и используемой памяти (или хотя бы по одной из этих характеристик).Программа считается эффективной по времени, если время работы программы пропорционально количеству пар чисел N, т. е. при увеличении N в k раз время работы программы должно увеличиваться не более чем в k раз.Программа считается эффективной по памяти, если размер памяти, использованной в программе для хранения данных, не зависит от числа N и не превышает 1 килобайта.Максимальная оценка за правильную программу, эффективную по времени и памяти, — 4 балла.Максимальная оценка за правильную программу, эффективную по времени, но неэффективную по памяти, — 3 балла. Как в варианте А, так и в варианте Б программа должна напечатать одно число — максимально возможную сумму, соответствующую условиям задачи (или 0, если такую сумму получить нельзя). НАПОМИНАЕМ! Не забудьте указать, к какому заданию относится каждая из представленных Вами программ. Перед текстом программы кратко опишите Ваш алгоритм решения, укажите использованный язык программирования и его версию (например, Free Pascal 2.6.4). Входные данныеДля варианта А на вход программе подаётся шесть строк, каждая из которых содержит два натуральных числа, не превышающих 10 000.Пример входных данных для варианта А:1 35 126 95 43 31 1 Для варианта Б на вход программе в первой строке подаётся количество пар N (1 ≤ N ≤ 100 000). Каждая из следующих N строк содержит два натуральных числа, не превышающих 10 000.Пример входных данных для варианта Б:61 35 126 95 43 31 1Пример выходных данных для приведённых выше примеров входных данных: 32 Критерии оценивания выполнения задания | Баллы | Пояснения для проверяющих.1. Задание Б является усложнением задания А. Если в качестве решения задания Б представлено решение задания А, то согласно приведённым ниже критериям его оценка будет такой же, как если бы это решение было представлено в качестве решения задания А.2. Два задания (и, соответственно, возможность для экзаменуемого представить две программы) дают ученику возможность (при его желании) сначала написать менее сложное и менее эффективное решение (задание А), которое даёт ему право получить 2 балла, а затем приступить к поиску более эффективного решения.3. Приведённые в п. 2.1-2.5 правила имеют целью избежать снижения оценки из-за того, что ученик перепутал обозначения заданий | | Критерии оценивания задания А | | При решении задачи A программа верно находит требуемую суммудля любых 6 пар исходных данных. Допускается до пяти синтаксических и приравненных к ним ошибок (см. критерии оценивания задания Б на 4 балла) | 2 | Не выполнены условия, позволяющие поставить 2 балла. Из описания алгоритма и общей структуры программы видно, что экзаменуемый в целом правильно представляет путь решения задачи. Допускается любое количество «описок» | 1 | Не выполнены критерии, позволяющие поставить 1 или 2 балла | 0 | Максимальный балл для задания А | 2 | Критерии оценивания выполнения задания Б | Баллы | Программа правильно работает для любых соответствующих условию входных данных и при этом эффективна как по времени, так и по памяти, т.е. не используются массивы и другие структуры данных (в том числе стек рекурсивных вызовов), размер которых зависит от количества входных элементов, а время работы пропорционально этому количеству. Возможно использование массивов и динамических структур данных при условии, что в них в каждый момент времени хранится фиксированное количество элементов, требующих для хранения меньше 1Кб. Программа может содержать не более трёх синтаксических ошибок следующих видов:1) пропущен или неверно указан знак пунктуации;2) неверно написано или пропущено зарезервированное слово языка программирования;3) не описана или неверно описана переменная;4) применяется операция, недопустимая для соответствующего типа данных.К синтаксическим ошибкам приравнивается использование неверного типа данных. Если одна и та же ошибка встречается несколько раз, она считается за одну ошибку | 4 | Не выполнены условия, позволяющие поставить 4 балла.Программа в целом работает правильно для любых входных данных произвольного размера. Время работы пропорционально количеству введённых чисел; правильно указано, какие величины должны вычисляться по ходу чтения элементов последовательности чисел. Количество синтаксических ошибок («описок») указанных выше видов - не более пяти.Используемая память, возможно, зависит от количества прочитанных чисел (например, входные данные запоминаются в массиве, контейнере STL в C++ или другой структуре данных). Допускается ошибка при вводе и выводе данных, не влияющая на содержание решения.Программа может содержать не более пяти синтаксических и приравненных к ним ошибок, описанных в критериях на 4 балла.Кроме того, допускается наличие одной ошибки, принадлежащей к одному из следующих видов:1) ошибка инициализации, в том числе отсутствие инициализации;2) не выводится результат, равный 0, или вместо 0 выводится неверное значение;3) допущен выход за границу массива;4) используется знак “<” вместо “<=”, “or” вместо “and” и т.п. | 3 | Не выполнены условия, позволяющие поставить 3 или 4 балла.Программа работает в целом верно, эффективно или нет, например для решения задачи используется перебор всех возможных вариантов выбора элементов в парах. В реализации алгоритма допускается до трёх содержательных ошибок, допустимые виды ошибок перечислены в критериях на 3 балла.Количество синтаксических «описок» не должно быть более семи. Программа может быть неэффективна по времени, например все числа запоминаются в массиве и перебираются все возможные суммы, т.е., по сути, реализовано решение задачи А без ограничений на количество ввёденных пар | 2 | Не выполнены условия, позволяющие поставить 2, 3 или 4 балла. Из описания алгоритма или общей структуры программы видно, что экзаменуемый в целом правильно представляет путь решения задачи независимо от эффективности. При этом программа может быть представлена отдельными фрагментами, без ограничений на количество синтаксических и содержательных ошибок. 1 балл ставится также за решения, верные лишь в частных случаях | 1 | Не выполнены критерии, позволяющие поставить 1, 2, 3 или 4 балла | 0 | Максимальный балл для задания Б | 4 | Итоговый максимальный балл | 4 |
Ответ
Ответ и полный разбор откроются после входа
Посмотреть ответРешение по шагам
Как рассуждать
Решение. Задание Б. Cначала рассмотрим решение для более общего задания (вариант Б).Решение 1.Чтобы получить максимально возможную сумму, будем брать из каждой пары самое большое число. Если полученная при этом сумма будет делиться на 3, её необходимо уменьшить. Для этого достаточно в одной из пар, где числа имеют разные остатки при делении на 3, заменить ранее выбранное число на другое число из той же пары. При этом разница между числами в паре должна быть минимально возможной. Если во всех парах оба числа имеют одинаковый остаток при делении на 3, получить нужную сумму невозможно.Замечание для эксперта. От ученика не требуется доказывать правильность предложенного алгоритма. Для удобства экспертов докажем, что при наличии решения достаточно заменить одно число. Пусть это не так, т. е. найдутся две такие пары, от которых в искомую сумму входят не бόльшие в своих парах числа x₁ и y₁, а меньшие числа из соответствующих пар: x₂ и y₂. При том x₂ + y₂ имеет остаток от деления на 3, отличный от остатка от деления на 3 числа x₁ + y₁ (иначе мы могли бы включить в сумму x₁ + y₁ вместо x₂ + y₂). Но это означает, что хотя бы одно из чисел x₂, y₂ тоже при делении на 3 имеет остаток, отличный от соответствующего максимального числа пары. Значит, оптимальной является замена только одного из таких чисел.Программа читает все данные один раз. В каждой паре определяется большее число Max и разность между бόльшим и меньшим числами пары D. После обработки очередной пары программа хранит два числа: s — сумму всех максимальных элементов прочитанных пар и D_(min) — наименьшую возможную разность D, не кратную
Осталось ещё 7 шагов
Шаг 2
Шаг 3
Шаг 4
Шаг 5
Шаг 6
Шаг 7
Шаг 8
Бесплатно · займёт минуту