Here is the problem: http://mirror.codeforces.com/problemset/problem/257/C
My approach was this: http://mirror.codeforces.com/contest/257/submission/11893523
I first sorted the points clockwise. Then from the last point of the 'clockwise-sorted' array, I go clockwise and counter-clockwise to calculate two angles: Angle1
and Angle2
. These two values are actually the summation of the angle between two consecutive points. I output the minimum one.
Eventually, I found out that this problem can be solved in a lot shorter way but I cannot find a bug in my approach.
Was my approach correct? If no, then what did I do wrong? If yes, then how can I get rid of the error = '0.0000388'
?
Your solution is almost correct, but you are losing precision. Why ? because you are using arccos(x) This involves calculating distance, and then dividing it again by abs(xcoordinate) , all of which contribute to your losses.
My advice is you better off by using arctan(x) because then your precision loss would be minimized ( self explanatory )
How can I use arctan(x) without doing some division? I did this but it is all the same: http://mirror.codeforces.com/contest/257/submission/11894858
I guess I didn't understand the idea of arctan(x).