# PROBLEM LINK:

Code Battle - Philosopher’s Code

Author: Rahul Sharma

Tester: Naman Mittal

Editorialist: Om Bindal

# DIFFICULTY:

EASY-MEDIUM

# PREREQUISITES:

Math, Number Theory, Observation.

# PROBLEM:

Given S sum of five variables v,w,x,y,z maximise value of expression z^2*(a+b+c) where a=vw(vw+2wx) , b=wx(wx+2xy) , c=xy(xy+2vw).

# QUICK EXPLANATION:

Simplified expression is (z(vw + wx + xy))^2 and to maximise it we need v=1,y=1 and remaning three variables should be as close as possible.

# EXPLANATION:

**Naive Approach:**

Use four nexted loop for four variables and find fifth variable as S-(v+w+x+y) and check the value of expression (z(vw + wx + xy))^2 in each iteration and output the maximum but for original constraints it may cause TLE.

**Optimised Approach:**

Optimized approach is to simplify the expression which will look as follows:

(z(vw + wx + xy))^2.

If you observe then vw + wx + xy can be written as (v+x)(w + y) - vy. This can imagined as area of rectangle with length (v + x) and breadth (w+y) and a section with length v and breadth y removed.

Thus to maximize the overall area we need to minimize the area of removed section and minimum value possible are v = y = 1.

Now w + x + z = S-2. To get the maximum answer w, x and z needs to be as close as possible i.e. their absolute difference between any two is 0 or 1.

# SOLUTIONS:

## Setter's Solution

```
#include<bits/stdc++.h>
using namespace std;
int main()
{
long long int t,v,w,x,y,z,val,mul,ans = 0, fans = 0,rem;
v = y = 1;
cin>>t;
while(t--)
{
cin>>val;
val = val - 2;
ans = fans = 0;
z = val/3;
rem = val%3;
if(rem == 1)
{
w = x = z;
z = z + 1;
}
else if(rem == 2)
{
w = x = z;
z = z + 1;
w = w + 1;
}
else
w = x = z;
mul = w + x + w*x;
ans = z*mul;
fans = ans*ans;
cout<<fans<<endl;
}
return 0;
}
```