Problem Link-https://www.codechef.com/problems/J7
Consider a box with sides a, b, c .
Now the three characteristics of this box are volume, surface area and total edge length.
We are given P and S. So mathematically
- P = 4(a+b+c)
- S = 2(ab + bc + ca)
- V = abc
We have 4 unknowns (a, b, c, V) and 3 equations stated above. We can easily find a brute force solution from here.
Take an arbitrary side, Say ‘c’. Now 0 < c < P <= 40000 . Since we are to report the answer rounded to two decimal places taking the least count of a side = 0.1 should be sufficient.
Run a for loop with ‘c’ = 0.1 -> P, incrementing c by 0.1 at each step. You need to use the above equations to find a and b and then finally calculate volume by multiplying them.
To iterate from 0.1 to 40000 we do 4*10^6 operations and since we have around 10 test cases we do around 4*10^7 operations. Maybe, you will get TLE like I did in my first try. If you do you need to analyse how to improve the bounds of ‘c’.
Hint : By varying ‘c’ from 0 to P we will get repeat solutions. Eg. If solution is 1, 2, 3 we will get all its permutations.{(1,2,3), (2, 3, 1), …}. Find better bounds for ‘c’ to prevent this.
great but please provide explanation of optimal solution…
Umm, If by optimal solution you mean the best possible one I am sure you need to apply calculus. It isn’t required by the problem. Is that what you are asking for ?