Statistics

Problem Statement for "FountainOfLife"

Problem Statement

A Fountain of Life is a special fountain that produces the elixir of life at a constant speed of elixir liters per second. A dark mage managed to cast a Curse of Death on the Fountain so in addition to the elixir it now produces a deadly poison at a constant speed of poison liters per second. Both the poison and elixir are collected in an infinitely large pool around the Fountain and form a mixture. The mixture will become deadly once the percentage of poison in the mixture is at least 50%. Your task is to calculate the time at which the mixture will become deadly. At the beginning (0-th second) the pool contains pool liters of 100% elixir.

Your program must return a double, the time in seconds at which the mixture becomes deadly. If the mixture never becomes deadly, return -1.0.

Definition

Class:
FountainOfLife
Method:
elixirOfDeath
Parameters:
int, int, int
Returns:
double
Method signature:
double elixirOfDeath(int elixir, int poison, int pool)
(be sure your method is public)

Notes

  • The returned value must be accurate to within a relative or absolute value of 1E-9.

Constraints

  • elixir will be between 1 and 10000, inclusive.
  • poison will be between 1 and 10000, inclusive.
  • pool will be between 1 and 10000, inclusive.

Examples

  1. 1

    2

    2

    Returns: 2.0

    At t = 0s there are 2 liters of 100% elixir. At t = 1s there are 3 liters of elixir and 2 liters of poison for a total volume of 5 liters. 2 liters of poison is 40% of 5 liters so the mixture is still not deadly. At t = 2s there are 4 liters of elixir and 4 liters of poison for a total volume of 8 liters. 4 liters of poison is exactly 50% of the mixture so it is now deadly.

  2. 200

    100

    1

    Returns: -1.0

    With 200 liters of elixir per second and only 100 liters of poison per second, the mixture never becomes deadly.

  3. 9999

    10000

    10000

    Returns: 10000.0

    It might take a long time for the mixture to become deadly.

  4. 1

    10000

    1

    Returns: 1.0001000100010001E-4

    On the other hand, it might take a short time for the mixture to become deadly.

  5. 40

    43

    41

    Returns: 13.666666666666666

  6. 1000

    999

    1

    Returns: -1.0

  7. 6465

    1234

    123

    Returns: -1.0

  8. 3144

    23

    2459

    Returns: -1.0

  9. 438

    574

    8456

    Returns: 62.1764705882353

  10. 243

    3400

    5234

    Returns: 1.6579030725372188

  11. 2348

    45

    4583

    Returns: -1.0

  12. 3

    4835

    96

    Returns: 0.019867549668874173

  13. 4875

    432

    1267

    Returns: -1.0

  14. 1236

    346

    9864

    Returns: -1.0

  15. 9946

    2231

    9784

    Returns: -1.0

  16. 6321

    32

    1335

    Returns: -1.0

  17. 9875

    32

    8743

    Returns: -1.0

  18. 9123

    24

    5689

    Returns: -1.0

  19. 7575

    5

    2347

    Returns: -1.0

  20. 1231

    2344

    10000

    Returns: 8.984725965858042

  21. 9999

    10000

    9992

    Returns: 9992.0

  22. 10000

    1

    6756

    Returns: -1.0

  23. 1234

    27

    4321

    Returns: -1.0

  24. 7777

    8787

    9898

    Returns: 9.8

  25. 7848

    1438

    2132

    Returns: -1.0

  26. 9876

    9897

    6874

    Returns: 327.3333333333333

  27. 2222

    3333

    7776

    Returns: 6.999099909990999

  28. 1805

    806

    2006

    Returns: -1.0

  29. 174

    806

    2006

    Returns: 3.1740506329113924

  30. 1

    2006

    2005

    Returns: 1.0

  31. 1999

    1998

    2001

    Returns: -1.0

  32. 15

    16

    17

    Returns: 17.0

  33. 19

    19

    20

    Returns: -1.0

  34. 987

    989

    5782

    Returns: 2891.0

  35. 3843

    3843

    806

    Returns: -1.0

  36. 806

    2006

    2005

    Returns: 1.6708333333333334

  37. 1

    1

    12

    Returns: -1.0

  38. 1

    1

    1

    Returns: -1.0

  39. 10000

    10000

    10000

    Returns: -1.0

  40. 1

    10000

    10000

    Returns: 1.000100010001

  41. 1

    10000

    2

    Returns: 2.0002000200020003E-4

  42. 2

    5

    1

    Returns: 0.3333333333333333

  43. 2000

    5000

    1000

    Returns: 0.3333333333333333

  44. 40

    43

    41

    Returns: 13.666666666666666

  45. 1

    1

    1

    Returns: -1.0

  46. 2

    2

    2

    Returns: -1.0

  47. 2

    2

    5

    Returns: -1.0

  48. 1

    10000

    1

    Returns: 1.0001000100010001E-4

  49. 100

    100

    1

    Returns: -1.0

  50. 5

    5

    5

    Returns: -1.0

  51. 5

    5

    2

    Returns: -1.0

  52. 10

    10

    10

    Returns: -1.0

  53. 4

    4

    5

    Returns: -1.0

  54. 1

    1

    100

    Returns: -1.0

  55. 5

    5

    6

    Returns: -1.0


This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2024, TopCoder, Inc. All rights reserved.
This problem was used for: