#include <algorithm>
#include <iostream>
#include <functional>
#include <map>
int main()
{
int numbers[] = {18, 12, 4, 5};
char signs[] = {'+', '-', '/', '*'};
std::map<char, std::function<int(int, int)>> m = {
{'+', [](int a, int b){ return a + b; }},
{'-', [](int a, int b){ return a - b; }},
{'/', [](int a, int b){ return a / b; }},
{'*', [](int a, int b){ return a * b; }},
};
std::sort(std::begin(signs), std::end(signs));
do {
int res = m[signs[2]](m[signs[1]](m[signs[0]](numbers[0], numbers[1]), numbers[2]), numbers[3]);
std::cout << numbers[0] << signs[0] << numbers[1] << signs[1]
<< numbers[2] << signs[2] << numbers[3] << " = " << res << std::endl;
} while (std::next_permutation(std::begin(signs), std::end(signs)));
return 0;
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPG1hcD4KCmludCBtYWluKCkKewogICAgaW50IG51bWJlcnNbXSA9IHsxOCwgMTIsIDQsIDV9OwogICAgY2hhciBzaWduc1tdID0geycrJywgJy0nLCAnLycsICcqJ307CiAgICBzdGQ6Om1hcDxjaGFyLCBzdGQ6OmZ1bmN0aW9uPGludChpbnQsIGludCk+PiBtID0gewogICAgICAgIHsnKycsIFtdKGludCBhLCBpbnQgYil7IHJldHVybiBhICsgYjsgfX0sCiAgICAgICAgeyctJywgW10oaW50IGEsIGludCBiKXsgcmV0dXJuIGEgLSBiOyB9fSwKICAgICAgICB7Jy8nLCBbXShpbnQgYSwgaW50IGIpeyByZXR1cm4gYSAvIGI7IH19LAogICAgICAgIHsnKicsIFtdKGludCBhLCBpbnQgYil7IHJldHVybiBhICogYjsgfX0sCiAgICB9OwoKICAgIHN0ZDo6c29ydChzdGQ6OmJlZ2luKHNpZ25zKSwgc3RkOjplbmQoc2lnbnMpKTsKCiAgICBkbyB7CiAgICAgICAgaW50IHJlcyA9IG1bc2lnbnNbMl1dKG1bc2lnbnNbMV1dKG1bc2lnbnNbMF1dKG51bWJlcnNbMF0sIG51bWJlcnNbMV0pLCBudW1iZXJzWzJdKSwgbnVtYmVyc1szXSk7CgogICAgICAgIHN0ZDo6Y291dCA8PCBudW1iZXJzWzBdIDw8IHNpZ25zWzBdIDw8IG51bWJlcnNbMV0gPDwgc2lnbnNbMV0KICAgICAgICAgICAgPDwgbnVtYmVyc1syXSA8PCBzaWduc1syXSA8PCBudW1iZXJzWzNdIDw8ICIgPSAiIDw8IHJlcyA8PCBzdGQ6OmVuZGw7CgogICAgfSB3aGlsZSAoc3RkOjpuZXh0X3Blcm11dGF0aW9uKHN0ZDo6YmVnaW4oc2lnbnMpLCBzdGQ6OmVuZChzaWducykpKTsKICAgIHJldHVybiAwOwp9Cg==