C
int expression_matter(int a, int b, int c) {
int res = a + b + c;
if ((a + b) * c > res) res = (a + b) * c;
if (a * (b + c) > res) res = a * (b + c);
if (a * b * c > res) res = a * b * c;
return res;
}
C++
unsigned short int expressionsMatter (unsigned short int a , unsigned short int b , unsigned short int c)
{
return std::max({a + b + c, a * (b + c), (a + b) * c, a * b * c});
}
unsigned short int expressionsMatter (unsigned short int a , unsigned short int b , unsigned short int c)
{
std::vector<int> v={a+b+c,(a+b)*c,a*(b+c),a*b*c};
return *std::max_element(v.begin(),v.end());
}
unsigned short int expressionsMatter (unsigned short int a , unsigned short int b , unsigned short int c)
{
if (a == 1) return (c==1) ? (a+b+c) : (a+b)*c;
if (b == 1) return a>c ? a*(b+c) : (a+b)*c;
if (c == 1) return a*(b+c);
return a*b*c;
}
unsigned short int expressionsMatter (unsigned short int a , unsigned short int b , unsigned short int c)
{
unsigned short int max=0;
if((a+b+c)>max) max=a+b+c;
if((a+b)*c>max) max=(a+b)*c;
if(((a*b)+c)>max) max=(a*b)+c;
if(a*(b+c)>max) max=a*(b+c);
if(a*b*c>max) max=a*b*c;
return max;
}
unsigned short int expressionsMatter (unsigned short int a , unsigned short int b , unsigned short int c)
{
int t, res = 0;
t = a + b + c;
if( t > res ) res = t;
t = a * ( b + c );
if( t > res ) res = t;
t = (a + b) * c;
if( t > res ) res = t;
t = a * b * c;
if( t > res ) res = t;
return res;
}