Решение задачи про круассаны и эклеры

На складе кондитерской фабрики хранятся пирожные двух видов — круассаны и эклеры. Круассанов A штук, а эклеров — B штук. Есть неограниченный запас подарочных коробок, в каждую коробку можно положить только три пирожных. При этом требуется, чтобы в коробке были пирожные обоих видов, то есть в одну коробку можно положить два круассана и один эклер или один круассан и два эклера.

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

Программа получает на вход два целых числа A и B, записанных в отдельных строках. 1≤ A≤ 109, 1≤ B≤ 109.

Если можно разложить все пирожные по коробкам в соответствии с условием задачи, программа должна вывести два целых числа. Первое число равно количеству коробок, в которых лежит два круассана и один эклер. Второе число равно количеству коробок, в которых лежит один круассан и два эклера.

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


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

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

На С++ пойдет?

#include <iostream>

using namespace std;

int main()
{
    int c, e;
    cin >> c >> e;

    int c2e = 0, e2c = 0;

    while (true)
    {
        if (c > e && c >= 2 && e >= 1)
        {
            ++c2e;
            c -= 2;
            --e;
        }
        else if (c >= 1 && e >= 2)
        {
            ++e2c;
            --c;
            e -= 2;
        }
        else
        {
            break;
        }
    }
    if (c > 0 || e > 0)
    {
        cout << -1;
    }
    else
    {
        cout << c2e << " " << e2c;
    }
    return 0;
}
→ Ссылка