10364. Вы знаете свою азбуку?

 

Коровы фермера Джона проводят ежедневные онлайн-собрания на платформе видеоконференций “mooZ”. Чтобы немного развлечься, они придумали простую числовую игру, в которую можно играть во время встречи.

У Элси есть три натуральных числа a, b и c (abc). Поскольку эти числа считаются секретными, Элси не сообщает их напрямую своей сестре Бесси. Вместо этого она передаёт Бесси семь (не обязательно различных) целых чисел в диапазоне от 1 до 109, утверждая, что это числа a, b, c, a + b, b + c, c + a и a + b + c, записанные в произвольном порядке.

Зная эти семь чисел, помогите Бесси определить значения a, b и c. Гарантируется, что ответ существует и единственен.

 

Вход. Семь целых чисел.

 

Выход. Выведите ab и c.

 

Пример входа

Пример выхода

2 2 11 4 9 7 9

2 2 7

 

 

РЕШЕНИЕ

жадные алгоритмы

 

Анализ алгоритма

Отсортируем все семь входных чисел. Наименьшие два из них будут равны значениям a и b. Наибольшее число в списке соответствует сумме a + b + c. Вычтем из него a и b, получим значение c.

 

Пример

Отсортируем входные числа.

Имеем: a = 2, b = 2. Поскольку a + b + c = 11, то c = 11 – ab = 11 – 2 – 2 = 7.

 

Реализация алгоритма

Читаем входные 7 чисел в массив.

 

for (i = 0; i < 7; i++)

  scanf("%d", &nums[i]);

 

Отсортируем массив.

 

sort(nums, nums + 7);

 

Наименьшие два числа соответствуют значениям a и b.

 

a = nums[0], b = nums[1];

 

Наибольшее число в массиве равно a + b + c. Вычтя из него a и b, получим c.

 

c = nums[6] - a - b;

 

Выводим ответ.

 

printf("%d %d %d\n", a, b, c);