Hello, everybody! I was solving http://mirror.codeforces.com/contest/319/problem/C which uses the "Convex Hull Trick". After many failed attempts I peeked at the AC solutions.I found a very interesting thing. This gets AC. However, if I replace the explicit conversion to double, with an explicit conversion to long long (which seems more suitable in this case, since we're not dealing with floating point numbers) I get WA, like this. Now, forgive me if it is a dumb question but I really didn't come across something like this before. Can someody help me figure it out? Thank you!
cout << (double)1000000000*1000000000 << " " << 1000000000*1000000000 << endl;
Try this and you will understand.
I believe it's more like
cout << (double)1000000000*1000000000 << " " << (long long)1000000000*1000000000 << endl;
Because in the code he's referenced, the instruction was cast to long long on its both sides
I hope, now it will be better for you.
This is indeed much more clearer. Learning by example is great. But what is the exact reason for this? Can a double hold bigger integers than long long?
Oh thank you!
That was useful. :D