Нахождения трёх чисел сумма делится на 3 из файла с++

В тек­сто­вом файле за­пи­сан набор на­ту­раль­ных чисел, не пре­вы­ша­ю­щих 108. Га­ран­ти­ру­ет­ся, что все числа раз­лич­ны. Из на­бо­ра нужно вы­брать три числа, сумма ко­то­рых де­лит­ся на 3. Какую наи­мень­шую сумму можно при этом по­лу­чить?

Вход­ные дан­ные.

Файл Aвведите сюда описание изображения введите сюда описание изображения

Пер­вая стро­ка вход­но­го файла со­дер­жит целое число N — общее ко­ли­че­ство чисел в на­бо­ре. Каж­дая из сле­ду­ю­щих N строк со­дер­жит одно число.

При­мер вход­но­го файла:

4

5

8

14

11

В дан­ном слу­чае есть че­ты­ре под­хо­дя­щие трой­ки: 5, 8, 11 (сумма 24); 5, 8, 14 (сумма 27); 5, 14 11 (сумма 30) и 8, 14, 11 (сумма 33). В от­ве­те надо за­пи­сать число 24.

Вам даны два вход­ных файла (A и B), каж­дый из ко­то­рых имеет опи­сан­ную выше струк­ту­ру. В от­ве­те ука­жи­те два числа: сна­ча­ла зна­че­ние ис­ко­мой суммы для файла A, затем для файла B.

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

auto x=std::ifstream("27-A."txt");
std::vector <int> v;

std::copy(std:: ifstream_iterator<int>(x),std::, ifstream_iterator<int>(),std::back_inserter(v));

STD::copy(v.begin(),v.end(), STD::ostream_iterator(STD::cout,"\n"));


Ответы (1 шт):

Автор решения: MBo

Сумму, кратную 3, можно получить из:

-трёх чисел, кратных 3
-трёх чисел с остатком 1 по модулю 3
-трёх чисел с остатком 2 по модулю 3
-одного числа, кратного 3, одного с остатком 1 по модулю 3, одного с остатком 2 по модулю 3

Значит, достаточно найти три минимальных числа по каждому из остатков 0,1,2, и проверить, какой из вышеуказанных вариантов лучше.

→ Ссылка