Ошибка.
Попробуйте повторить позже
Дано число n, затем n строк, в каждой по паре натуральных различных чисел. Из каждой пары берется одно число так, чтобы итоговая сумма всех таких чисел была минимальна и кратна 3.
В ответе укажите два числа: сначала для файла А, затем для файла B.
Пример входных данных:
3
13 20
21 11
1 1
Для таких входных данных значением искомое суммы будет число 42.
Решение статикой.
Предположим, что после работы жадного алгоритма мы получили сумму, с остатком 2 при делении на 3.
Дифф — обозначение для какой-то разницы, от слова difference.
Итак, казалось бы все просто — можно добавить мин. дифф с остатком 1. Но на самом деле этого недостаточно. Ведь еще можно добавить к подобной сумме два мин. диффа с остатком 2. И ведь действительно: S(2) + diff(1) = (0) или S(2) + diff(2) + post_diff(2) = (0). (добавляем, так как уже посчитали минимальную сумму, теперь ее можно только увеличивать). Тоже самое и для суммы, с остатком 1.
Собственно, нужно хранить четыре разности: первые две с остатком 1, вторые с остатком 2.
f = open(’A5-8.txt’) n = int(f.readline()) ans = 0 #индексы 0 и 1 отвечают за мин дифы с ост. 1 #2 и 3 за мин дифы с ост. 2 diff = [1000000]*4 for i in range(n): a, b = map(int, f.readline().split()) ans += min(a,b) tmp = abs(a-b) if tmp % 3 == 1: if tmp < diff[0]: diff[1], diff[0] = diff[0], tmp else: diff[1] = min(diff[1], tmp) if tmp % 3 == 2: if tmp < diff[2]: diff[3], diff[2] = diff[2], tmp else: diff[3] = min(diff[3], tmp) if ans % 3 == 0: print(ans) elif ans % 3 == 1: print(ans + min(diff[2], diff[0]+diff[1])) else: print(ans + min(diff[0], diff[2] + diff[3]))
Специальные программы
Программа
лояльности v2.0
Приглашай друзей в Школково и получай вознаграждение до 10%!
Крути рулетку
и выигрывай призы!
Крути рулетку и покупай курсы со скидкой, которая привязывается к вашему аккаунту.
Бесплатное обучение
в Школково
Для детей ДНР, ЛНР, Херсонской, Запорожской, Белгородской, Брянской областей, а также школьникам, находящимся в пунктах временного размещения Крыма обучение на платформе бесплатное.
Налоговые вычеты
Узнай, как получить налоговый вычет при оплате обучения в «Школково».
Специальное предложение
для учителей
Бесплатный доступ к любому курсу подготовки к ЕГЭ или олимпиадам от «Школково». Мы с вами делаем общее и важное дело, а потому для нас очень значимо быть чем-то полезными для учителей по всей России!
Вернём деньги за курс
за твою сотку на ЕГЭ
Сдать экзамен на сотку и получить обратно деньги за подготовку теперь вполне реально!