เบชเบดเปˆเบ‡เบ—เป‰เบฒเบ—เบฒเบ TopCoder Open 2019: เบ•เบฑเบ” pie เป€เบ›เบฑเบ™เบซเบปเบเบ•เปˆเบญเบ™

เบชเบดเปˆเบ‡เบ—เป‰เบฒเบ—เบฒเบ TopCoder Open 2019: เบ•เบฑเบ” pie เป€เบ›เบฑเบ™เบซเบปเบเบ•เปˆเบญเบ™
เปƒเบ™ footsteps เป„เบ”เป‰ "เบ‚เบญเบ‡เบžเบงเบเป€เบฎเบปเบฒเบŠเบฐเบ™เบฐ: TopCoder Open 2019" เบ‚เป‰เบญเบเป€เบœเบตเบเปเบœเปˆเบšเบฑเบ™เบซเบฒเบˆเบฒเบเบเบฒเบ™เบ•เบดเบ”เบ•เบฒเบก Algorithm (เป‚เบ„เบ‡เบเบฒเบ™เบเบดเบฅเบฒเบ„เบฅเบฒเบชเบชเบดเบ. เปƒเบ™เบซเบ™เบถเปˆเบ‡เบŠเบปเปˆเบงเป‚เบกเบ‡เป€เบ„เบดเปˆเบ‡, เบ—เปˆเบฒเบ™เบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบชเบฒเบกเบขเปˆเบฒเบ‡เปƒเบ™ Java, C#, C++ เบซเบผเบท Python.)

1. Pie เบชเปเบฒเบฅเบฑเบšเบซเบปเบ

เบเบฒเบ™เบชเป‰เบฒเบ‡เบšเบฑเบ™เบซเบฒ

เบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเปเบกเปˆเบ™ 4 เบงเบดเบ™เบฒเบ—เบต.

เบ—เปˆเบฒเบ™เบกเบต pie. เป€เบกเบทเปˆเบญเป€เบšเบดเปˆเบ‡เบˆเบฒเบเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, cake เบกเบตเบฎเบนเบšเบฎเปˆเบฒเบ‡เบ‚เบญเบ‡ polygon convex (เบขเปˆเบฒเบ‡เป€เบ‚เบฑเป‰เบกเบ‡เบงเบ”). เป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบฎเบฑเบšเบˆเบธเบ”เบ›เบฐเบชเบฒเบ™เบ‡เบฒเบ™เบ‚เบญเบ‡เบˆเบธเบ”เบ•เบฑเป‰เบ‡เปƒเบ™เบˆเบณเบ™เบงเบ™ X เปเบฅเบฐ Y.

เบ—เปˆเบฒเบ™โ€‹เบกเบตโ€‹เบซเบกเบนเปˆโ€‹เป€เบžเบทเปˆเบญเบ™โ€‹เบซเป‰เบฒโ€‹เบ„เบปเบ™โ€‹. เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เปเบšเปˆเบ‡ pie เป€เบ›เบฑเบ™เบซเบปเบเบ•เปˆเบญเบ™เบ‚เบญเบ‡เบžเบทเป‰เบ™เบ—เบตเปˆเป€เบ—เบปเปˆเบฒเบ—เบฝเบกเบเบฑเบ™ (เปเบ•เปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบฎเบนเบšเบฎเปˆเบฒเบ‡เบ”เบฝเบงเบเบฑเบ™). เปเบ™เปˆเบ™เบญเบ™, เบ—เบธเบเป†เบ„เบปเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เปƒเบ™เบซเป‰เบฒเบเบฒเบ™เบ•เบฑเบ”, เปเบ•เปˆเบงเปˆเบฒเบžเบฝเบ‡เปเบ•เปˆเบœเบนเป‰เบŠเปˆเบฝเบงเบŠเบฒเบ™เป€เบ—เบปเปˆเบฒเบ™เบฑเป‰เบ™เบ—เบตเปˆเบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เปƒเบ™เบชเบฒเบกเบเบฒเบ™เบ•เบฑเบ”.

เบŠเบญเบเบซเบฒเบชเบฒเบกเบ•เบฑเบ”เปƒเบ™เป€เบชเบฑเป‰เบ™เบŠเบทเปˆเบœเปˆเบฒเบ™เบˆเบธเบ”เบซเบ™เบถเปˆเบ‡เบ—เบตเปˆเบˆเบฐเปเบšเปˆเบ‡ pie เป€เบ›เบฑเบ™เบซเบปเบเบชเปˆเบงเบ™เป€เบ—เบปเปˆเบฒเบ—เบฝเบกเบเบฑเบ™. เบžเบดเบก {x, y, d1, d2, d3}, เบšเปˆเบญเบ™เบ—เบตเปˆ (x, y) เปเบกเปˆเบ™เบˆเบธเบ”เบ—เบปเปˆเบงเป„เบ›เบ‚เบญเบ‡เบเบฒเบ™เบ•เบฑเบ”เบ—เบฑเบ‡เบชเบฒเบก, เปเบฅเบฐ d1, d2, d3 เปเบกเปˆเบ™เบกเบธเบกเบ—เบดเบ”เบ—เบฒเบ‡เบ‚เบญเบ‡เบเบฒเบ™เบ•เบฑเบ”เปƒเบ™เป€เบฃเบ”เบฝเบ™.

เบ„เปเบฒเบ™เบดเบเบฒเบกเบซเป‰เบญเบ‡เบฎเบฝเบ™: CakeForSix
เบงเบดเบ—เบตเบเบฒเบ™: เบ•เบฑเบ”
เบžเบฒเบฃเบฒเบกเบดเป€เบ•เบต: int[], int[] เบเบฑเบšเบ„เบทเบ™: double[] เบฅเบฒเบเป€เบŠเบฑเบ™เบงเบดเบ—เบตเบเบฒเบ™: double[] cut(int[] x, int[] y)
(เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบงเบดเบ—เบตเบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบกเปˆเบ™เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ)

เบซเบกเบฒเบเป€เบซเบ”

  • เบ—เบดเบ”เบ—เบฒเบ‡เบšเบงเบเบ•เบฒเบกเปเบเบ™ x เปเบกเปˆเบ™ 0 (เป€เบฃเบ”เบฝเบ™), เบ—เบดเบ”เบ—เบฒเบ‡เบšเบงเบเบ•เบฒเบกเปเบเบ™ y เปเบกเปˆเบ™ pi/2 (เป€เบฃเบ”เบฝเบ™).
  • เบเบฒเบ™เบ•เบฑเบ”เปƒเบ™เบ—เบดเบ”เบ—เบฒเบ‡ d เปเบกเปˆเบ™เบ„เป‰เบฒเบเบ„เบทเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบ•เบฑเบ”เปƒเบ™เบ—เบดเบ”เบ—เบฒเบ‡ pi*k+d เบชเปเบฒเบฅเบฑเบšเบˆเปเบฒเบ™เบงเบ™เป€เบ•เบฑเบก k.
  • เบ—เปˆเบฒเบ™เบชเบฒเบกเบฒเบ”เบญเบญเบเบ—เบดเบ”เบ—เบฒเบ‡เปƒเบ”เบเปเปˆเบ•เบฒเบก, เบžเบงเบเป€เบ‚เบปเบฒเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบกเบฒเบˆเบฒเบ [0, pi).
  • grader เบˆเบฐเบ„เบดเบ”เป„เบฅเปˆเบžเบทเป‰เบ™เบ—เบตเปˆเบ‚เบญเบ‡ cake เบซเบปเบเบ•เปˆเบญเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปƒเบ™เบชเบญเบ‡เป€เบ—เบปเปˆเบฒ. เบ„เปเบฒเบ•เบญเบšเบˆเบฐเบ–เบทเบเบเบญเบกเบฎเบฑเบšเบ–เป‰เบฒเบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เบžเบงเบเบกเบฑเบ™เบซเบ™เป‰เบญเบเบเบงเปˆเบฒ 10^(-4).
  • เบŠเบฑเบ”เป€เบˆเบ™เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เปƒเบซเป‰ X เปเบฅเบฐ Y เป€เบ›เบฑเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ” เปเบฅเบฐเปƒเบซเบเปˆเบชเบธเบ”เปƒเบ™เบซเบปเบเบžเบทเป‰เบ™เบ—เบตเปˆเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบ—เบตเปˆเบ„เบดเบ”เป„เบฅเปˆเป‚เบ”เบเบœเบนเป‰เบฎเบฝเบ™. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ„เปเบฒเบ•เบญเบšเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบˆเบฐเบ–เบทเบเบเบญเบกเบฎเบฑเบšเบ–เป‰เบฒ Y
  • (เบชเบฐเบšเบฑเบšเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบ‚เบญเบ‡เบšเบฑเบ™เบซเบฒเป„เบ”เป‰เบ™เปเบฒเปƒเบŠเป‰เบ„เบงเบฒเบกเปเบกเปˆเบ™เบเปเบฒเบ‚เบญเบ‡ 1e-7 เปเบ—เบ™เบ—เบตเปˆเบˆเบฐเป€เบ›เบฑเบ™ 1e-4. เป€เบžเบทเปˆเบญเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ™เบตเป‰เบขเบนเปˆเปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™, เบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เบ„เบงเบฒเบกเปเบกเปˆเบ™เบเปเบฒเป„เบ”เป‰เบ–เบทเบเบซเบผเบธเบ”เบฅเบปเบ‡เป€เบ™เบทเปˆเบญเบ‡เบˆเบฒเบเบกเบตเบเปเบฅเบฐเบ™เบตเบเบฒเบ™เป‚เบ—เบ—เบตเปˆเบญเบฒเบ”เบˆเบฐเป€เบฎเบฑเบ”เปƒเบซเป‰เบšเบฑเบ™เบซเบฒเบšเปเปˆเบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เป„เบ”เป‰เบ”เป‰เบงเบเบ„เบงเบฒเบกเปเบกเปˆเบ™เบเปเบฒ. เบ‚เบญเบ‡ 1e-7. เปƒเบ™เป‚เบฅเบเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก, เบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เบšเปเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบเปเบฅเบฐเบ™เบตเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปเบฅเบฐเบเบฑเบ‡เบ•เป‰เบญเบ‡เบเบฒเบ™เบ„เบงเบฒเบกเปเบกเปˆเบ™เบเปเบฒเบชเบนเบ‡, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ—เบตเปˆเบกเบตเบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ•เบปเบงเป€เบฅเบเบ—เบปเปˆเบงเป„เบ›เบšเบฒเบ‡เบขเปˆเบฒเบ‡เบšเปเปˆเปเบกเปˆเบ™เป€เบฅเบทเปˆเบญเบ‡เบ‡เปˆเบฒเบ).

Restrictions

  • x เบ›เบฐเบเบญเบšเบกเบต 3 เบซเบฒ 50 เบญเบปเบ‡เบ›เบฐเบเบญเบš.
  • y เบกเบตเบˆเปเบฒเบ™เบงเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบšเบ”เบฝเบงเบเบฑเบ™เบเบฑเบš x.
  • เบ›เบฐเบชเบฒเบ™เบ‡เบฒเบ™เบ—เบฑเบ‡เปเบปเบ”เบฅเบฐเบซเบงเปˆเบฒเบ‡ 0 เปเบฅเบฐ 10 เบฅเบงเบก
  • x เปเบฅเบฐ y เบเปเบฒเบ™เบปเบ” polygon เป‚เบเบ™เปƒเบ™เบ—เบดเบ”เบ—เบฒเบ‡เบเบปเบ‡เบเบฑเบ™เบ‚เป‰เบฒเบก.

เบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเปƒเบ™เบžเบฒเบชเบฒเบญเบฑเบ‡เบเบดเบ”

เบ–เบฐเปเบซเบผเบ‡เบเบฒเบ™เบšเบฑเบ™เบซเบฒ

เบเปเบฒเบ™เบปเบ”เป€เบงเบฅเบฒเปเบกเปˆเบ™ 4 เบงเบดเบ™เบฒเบ—เบต.

เป€เบˆเบปเป‰เบฒเบกเบตเป€เบ„เบฑเบ. เป€เบซเบฑเบ™เป„เบ”เป‰เบˆเบฒเบเบ‚เป‰เบฒเบ‡เป€เบ—เบดเบ‡, เป€เบ„เป‰เบเป€เบ›เบฑเบ™เบฎเบนเบšเบชเบตเปˆเบซเบผเปˆเบฝเบกเป‚เบ„เบก (เบขเปˆเบฒเบ‡เป€เบ‚เบฑเป‰เบกเบ‡เบงเบ”). เป€เบˆเบปเป‰เบฒเป„เบ”เป‰เบฎเบฑเบšเบˆเบธเบ”เบ›เบฐเบชเบฒเบ™เบ‡เบฒเบ™เบ‚เบญเบ‡เบˆเบธเบ”เบ•เบฑเป‰เบ‡เบ‚เบญเบ‡เบกเบฑเบ™เบขเบนเปˆเปƒเบ™ int[]sx เปเบฅเบฐ y.

เบ—เปˆเบฒเบ™โ€‹เบกเบตโ€‹เบซเบกเบนเปˆโ€‹เป€เบžเบทเปˆเบญเบ™โ€‹เบซเป‰เบฒโ€‹เบ„เบปเบ™โ€‹. เปƒเบ™เบ›เบฑเบ”เบˆเบธเบšเบฑเบ™เบ—เปˆเบฒเบ™เบ•เป‰เบญเบ‡เบเบฒเบ™เบ•เบฑเบ” cake เป€เบ›เบฑเบ™เบซเบปเบเบ•เปˆเบญเบ™เบ‚เบญเบ‡เบžเบทเป‰เบ™เบ—เบตเปˆเป€เบ—เบปเปˆเบฒเบ—เบฝเบกเบเบฑเบ™ (เปเบ•เปˆเบšเปเปˆเบˆเปเบฒเป€เบ›เบฑเบ™เบ•เป‰เบญเบ‡เบกเบตเบฎเบนเบšเบฎเปˆเบฒเบ‡เป€เบ—เบปเปˆเบฒเบ—เบฝเบกเบเบฑเบ™). เปเบ™เปˆเบ™เบญเบ™, เบ—เบธเบเป†เบ„เบปเบ™เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เบชเบดเปˆเบ‡เบ™เบฑเป‰เบ™เป„เบ”เป‰เปƒเบ™เบซเป‰เบฒเบเบฒเบ™เบ•เบฑเบ” - เปเบ•เปˆเบงเปˆเบฒเบžเบฝเบ‡เปเบ•เปˆเบœเบนเป‰เบŠเปˆเบฝเบงเบŠเบฒเบ™เบ—เบตเปˆเปเบ—เป‰เบˆเบดเบ‡เบชเบฒเบกเบฒเบ”เป€เบฎเบฑเบ”เป„เบ”เป‰เปƒเบ™เบชเบฒเบกเบ„เบฑเป‰เบ‡!

เบŠเบญเบเบซเบฒเบเบฒเบ™เบ•เบฑเบ”เป€เบชเบฑเป‰เบ™เบŠเบทเปˆเบชเบฒเบกเป€เบชเบฑเป‰เบ™เบœเปˆเบฒเบ™เบˆเบธเบ”เบ”เบฝเบงเบเบฑเบ™เบ—เบตเปˆเบ•เบฑเบ”เป€เบ„เป‰เบเบญเบญเบเป€เบ›เบฑเบ™เบซเบปเบเบชเปˆเบงเบ™เบ‚เบฐเบซเบ™เบฒเบ”เปƒเบซเบเปˆเป€เบ—เบปเปˆเบฒเบ—เบฝเบกเบเบฑเบ™. เบเบฑเบšเบ„เบทเบ™ {x, y, d1, d2, d3}, เบšเปˆเบญเบ™เบ—เบตเปˆ (x, y) เปเบกเปˆเบ™เบˆเบธเบ”เบ—เบปเปˆเบงเป„เบ›เบ‚เบญเบ‡เบชเบฒเบกเบ•เบฑเบ”, เปเบฅเบฐ d1, d2, d3 เปเบกเปˆเบ™เบ—เบดเบ”เบ—เบฒเบ‡เบ‚เบญเบ‡เบžเบงเบเป€เบ‚เบปเบฒเปƒเบ™เป€เบฃเบ”เบฝเบ™.

เบ„เปเบฒเบ™เบดเบเบฒเบก

เบซเป‰เบญเบ‡เบฎเบฝเบ™: CakeForSix
เบงเบดเบ—เบตเบเบฒเบ™: เบ•เบฑเบ”
เบžเบฒเบฃเบฒเบกเบดเป€เบ•เบต: int[], int[] เบเบฑเบšเบ„เบทเบ™: double[] เบฅเบฒเบเป€เบŠเบฑเบ™เบงเบดเบ—เบตเบเบฒเบ™: double[] cut(int[] x, int[] y)
(เปƒเบซเป‰เปเบ™เปˆเปƒเบˆเบงเปˆเบฒเบงเบดเบ—เบตเบเบฒเบ™เบ‚เบญเบ‡เบ—เปˆเบฒเบ™เปเบกเปˆเบ™เบชเบฒเบ—เบฒเบฅเบฐเบ™เบฐ)

เบญเปˆเบทเบ™
โ€” เบ—เบดเบ”เบ—เบฒเบ‡เบšเบงเบเบ•เบฒเบกเปเบเบ™ x เปเบกเปˆเบ™ 0 (เป€เบฃเบ”เบฝเบ™), เบ—เบดเบ”เบ—เบฒเบ‡เบšเบงเบเบ•เบฒเบกเปเบเบ™ y เปเบกเปˆเบ™ pi/2 (เป€เบฃเบ”เบฝเบ™).
โ€” เบเบฒเบ™เบ•เบฑเบ”เปƒเบ™เบ—เบดเบ”เบ—เบฒเบ‡ d เปเบกเปˆเบ™เบ„เบทเบเบฑเบ™เบเบฑเบšเบเบฒเบ™เบ•เบฑเบ”เปƒเบ™เบ—เบดเบ”เบ—เบฒเบ‡ pi*k+d เบชเปเบฒเบฅเบฑเบšเบˆเปเบฒเบ™เบงเบ™เป€เบ•เบฑเบก k.
โ€” เบ—เปˆเบฒเบ™โ€‹เบญเบฒเบ”โ€‹เบˆเบฐโ€‹เบเบฑเบšโ€‹เบ„เบทเบ™โ€‹เป„เบ›โ€‹เบšเปˆเบญเบ™โ€‹เบ—เบฒเบ‡โ€‹เปƒเบ”โ€‹เบซเบ™เบถเปˆเบ‡โ€‹, เบžเบงเบโ€‹เป€เบ‚เบปเบฒโ€‹เป€เบˆเบปเป‰เบฒโ€‹เบšเปเปˆโ€‹เบˆเปเบฒโ€‹เป€เบ›เบฑเบ™โ€‹เบ•เป‰เบญเบ‡โ€‹เบˆเบฒเบ [0โ€‹,piโ€‹)โ€‹.
โ€” เบœเบนเป‰เบฎเบฝเบ™เบˆเบฐเบ„เบดเบ”เป„เบฅเปˆเบžเบทเป‰เบ™เบ—เบตเปˆเบ‚เบญเบ‡เป€เบ„เป‰เบเบซเบปเบเบญเบฑเบ™เบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเป€เบ›เบฑเบ™เบชเบญเบ‡เป€เบ—เบปเปˆเบฒ. เบ„เปเบฒเบ•เบญเบšเบˆเบฐเบ–เบทเบเบเบญเบกเบฎเบฑเบšเบ–เป‰เบฒเบ„เบงเบฒเบกเปเบ•เบเบ•เปˆเบฒเบ‡เบขเปˆเบฒเบ‡เปเบ—เป‰เบˆเบดเบ‡เบฅเบฐเบซเบงเปˆเบฒเบ‡เบžเบงเบเบกเบฑเบ™เบซเบ™เป‰เบญเบเบเบงเปˆเบฒ 10^(-4).
โ€” เบŠเบฑเบ”เป€เบˆเบ™เบเบงเปˆเบฒเบ™เบฑเป‰เบ™, เปƒเบซเป‰ X เปเบฅเบฐ Y เป€เบ›เบฑเบ™เบžเบทเป‰เบ™เบ—เบตเปˆเบ™เป‰เบญเบเบ—เบตเปˆเบชเบธเบ” เปเบฅเบฐเปƒเบซเบเปˆเบ—เบตเปˆเบชเบธเบ”เปƒเบ™เบซเบปเบเบžเบทเป‰เบ™เบ—เบตเปˆเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒ, เบ•เบฒเบกเบเบฒเบ™เบ„เบดเบ”เป„เบฅเปˆเป‚เบ”เบเบœเบนเป‰เบฎเบฝเบ™. เบซเบผเบฑเบ‡เบˆเบฒเบเบ™เบฑเป‰เบ™, เบ„เปเบฒเบ•เบญเบšเบ‚เบญเบ‡เป€เบˆเบปเป‰เบฒเบˆเบฐเบ–เบทเบเบเบญเบกเบฎเบฑเบšเบ–เป‰เบฒ Y < max( X + 10^(-4), X * (1+10^(-4))).
โ€” (เบชเบฐเบšเบฑเบšเบ•เบปเป‰เบ™เบชเบฐเบšเบฑเบšเบ‚เบญเบ‡เบšเบฑเบ™เบซเบฒเป„เบ”เป‰เปƒเบŠเป‰เบ„เบงเบฒเบกเปเบกเปˆเบ™เบเปเบฒ 1e-7 เปเบ—เบ™ 1e-4. เบชเปเบฒเบฅเบฑเบšเบเบฒเบ™เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบ™เบตเป‰เบขเบนเปˆเปƒเบ™เบšเปˆเบญเบ™เป€เบเบฑเบšเบกเป‰เบฝเบ™, เบ‚เบญเบšเป€เบ‚เบ”เบˆเปเบฒเบเบฑเบ”เบ„เบงเบฒเบกเปเบกเปˆเบ™เบเปเบฒเป„เบ”เป‰เบ–เบทเบเบซเบผเบธเบ”เบฅเบปเบ‡เบเป‰เบญเบ™เบเบฒเบ™เบกเบตเบขเบนเปˆเบ‚เบญเบ‡เบเปเบฅเบฐเบ™เบตเบ—เบตเปˆเบ—เป‰เบฒเบ—เบฒเบเบ—เบตเปˆเบชเบธเบ”เบ—เบตเปˆเป€เบฎเบฑเบ”เปƒเบซเป‰เบงเบฝเบเบ‡เบฒเบ™เบšเปเปˆเบชเบฒเบกเบฒเบ”เปเบเป‰เป„เบ‚เป„เบ”เป‰เบ”เป‰เบงเบเบ„เบงเบฒเบกเปเบกเปˆเบ™เบเปเบฒ 1e-7. เปƒเบ™เป‚เบฅเบเบ—เบตเปˆเป€เบซเบกเบฒเบฐเบชเบปเบก, เบ‚เปเป‰เบˆเปเบฒเบเบฑเบ”เบˆเบฐเบšเปเปˆเบญเบฐเบ™เบธเบเบฒเบ”เปƒเบซเป‰เบเปเบฅเบฐเบ™เบตเบ”เบฑเปˆเบ‡เบเปˆเบฒเบงเปเบฅเบฐเบเบฑเบ‡เบ•เป‰เบญเบ‡เบเบฒเบ™เบ„เบงเบฒเบกเปเบกเปˆเบ™เบเปเบฒเบชเบนเบ‡, เบ”เบฑเปˆเบ‡เบ™เบฑเป‰เบ™เบกเบฑเบ™เบšเปเปˆเบ‡เปˆเบฒเบเบ—เบตเปˆเบˆเบฐเปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเป‚เบ”เบเบœเปˆเบฒเบ™เบเบฒเบ™เป€เบžเบตเปˆเบกเบ›เบฐเบชเบดเบ”เบ—เบดเบžเบฒเบšเบ•เบปเบงเป€เบฅเบเบ—เบปเปˆเบงเป„เบ›.)

เบ‚เปเป‰ เบˆเบณ เบเบฑเบ”
โ€” x เบˆเบฐโ€‹เบกเบตโ€‹เบฅเบฐโ€‹เบซเบงเปˆเบฒเบ‡ 3 เปเบฅเบฐ 50 เบญเบปเบ‡โ€‹เบ›เบฐโ€‹เบเบญเบšโ€‹, เบฅเบงเบกโ€‹.
โ€” y เบˆเบฐเบกเบตเบˆเปเบฒเบ™เบงเบ™เบญเบปเบ‡เบ›เบฐเบเบญเบšเป€เบ—เบปเปˆเบฒเบเบฑเบš x.
- เบˆเบธเบ”เบ›เบฐเบชเบฒเบ™เบ‡เบฒเบ™เบ—เบฑเบ‡เปเบปเบ”เบˆเบฐเบขเบนเปˆเบฅเบฐเบซเบงเปˆเบฒเบ‡ 0 เบซเบฒ 10,000, เบฅเบงเบกเบ—เบฑเบ‡เปเบปเบ”.
โ€” x เปเบฅเบฐ y เบˆเบฐโ€‹เบญเบฐโ€‹เบ—เบดโ€‹เบšเบฒเบโ€‹เป€เบ›เบฑเบ™ polygon convex เปƒเบ™โ€‹เบฅเปเบฒโ€‹เบ”เบฑเบš counterclockwise.

เบ•เบปเบงเบขเปˆเบฒเบ‡

0)

{0, 20, 30, 50, 30, 20}
{10, 0, 0, 10, 20, 20}
เบเบฑเบšเบ„เบทเบ™:
{24.999999999437453, 9.999999999500002, 0.0, 0.7266423406817211, 2.4149503129080787 }

hexagon symmetrical เปเบ•เปˆเบชเบฐเบซเบกเปเปˆเบฒเบชเบฐเป€เบซเบกเบต. เบ„เปเบฒเบ•เบญเบšเบ•เบปเบงเบขเปˆเบฒเบ‡เปเบกเปˆเบ™เป€เบ—เบปเปˆเบฒเบเบฑเบšเบเบฒเบ™เบ•เบฑเบ”เบกเบฑเบ™เบญเบญเบเป€เบ›เบฑเบ™เป€เบ„เบดเปˆเบ‡เบซเบ™เบถเปˆเบ‡เบ•เบฒเบกเปเบ™เบงเบ™เบญเบ™เปเบฅเบฐเบ•เบฑเบ”เบญเบตเบเบชเบญเบ‡เป€เบชเบฑเป‰เบ™เบฅเบปเบ‡เบชเบนเบ™เบเบฒเบ‡เบ—เบตเปˆเปเบšเปˆเบ‡เปเบ•เปˆเบฅเบฐเบŠเบดเป‰เบ™เป€เบ›เบฑเบ™เบชเบฒเบกเบชเปˆเบงเบ™.

เบชเบดเปˆเบ‡เบ—เป‰เบฒเบ—เบฒเบ TopCoder Open 2019: เบ•เบฑเบ” pie เป€เบ›เบฑเบ™เบซเบปเบเบ•เปˆเบญเบ™

1)

{0, 1000, 0}
{0, 0, 1000}
เบเบฑเบšเบ„เบทเบ™:
{333.3333333331763, 333.3333333332546, 0.7853981633986264, 2.0344439357948154, 2.6779450445891753 }

เบชเบฒเบกเบซเบผเปˆเบฝเบกเบ‚เบงเบฒ. เบญเบตเบเป€เบ—เบทเปˆเบญเบซเบ™เบถเปˆเบ‡, เบžเบงเบเป€เบฎเบปเบฒเบชเบฒเบกเบฒเบ”เป€เบฅเบตเปˆเบกเบ•เบปเป‰เบ™เบ”เป‰เบงเบเบซเบ™เบถเปˆเบ‡เปƒเบ™เบชเบฒเบกเบ•เบฑเบ”เบ•เบฒเบกเปเบเบ™เบ‚เบญเบ‡ symmetry.

เบชเบดเปˆเบ‡เบ—เป‰เบฒเบ—เบฒเบ TopCoder Open 2019: เบ•เบฑเบ” pie เป€เบ›เบฑเบ™เบซเบปเบเบ•เปˆเบญเบ™

2)

{40, 70, 90, 90, 50}
{30, 20, 40, 100, 60}
เบเบฑเบšเบ„เบทเบ™:
{69.79517771922892, 52.77575974637605, 2.0616329654335885, 3.637826104091601, 4.32123485812475 }

pentagon เบชเบฐเบซเบกเปเปˆเบฒเบชเบฐเป€เบซเบกเบต.

เบชเบดเปˆเบ‡เบ—เป‰เบฒเบ—เบฒเบ TopCoder Open 2019: เบ•เบฑเบ” pie เป€เบ›เบฑเบ™เบซเบปเบเบ•เปˆเบญเบ™

3)

{300, 400, 300, 200}
{500, 600, 700, 600}
เบœเบปเบ™เบ•เบญเบšเปเบ—เบ™: {299.99999999974995, 599.9999999995, 0.0, 1.107148717794088, 2.034443935795705 }

เบชเบตเปˆเบซเบผเปˆเบฝเบกเบกเบปเบ™เบซเบกเบธเบ™ 45 เบญเบปเบ‡เบชเบฒ.

เบชเบดเปˆเบ‡เบ—เป‰เบฒเบ—เบฒเบ TopCoder Open 2019: เบ•เบฑเบ” pie เป€เบ›เบฑเบ™เบซเบปเบเบ•เปˆเบญเบ™

[เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™]

เบžเบฝเบ‡เปเบ•เปˆเบœเบนเป‰เปƒเบŠเป‰เบฅเบปเบ‡เบ—เบฐเบšเบฝเบ™เบชเบฒเบกเบฒเบ”เป€เบ‚เบปเป‰เบฒเบฎเปˆเบงเบกเปƒเบ™เบเบฒเบ™เบชเปเบฒเบซเบผเบงเบ”. เป€เบ‚เบปเป‰เบฒโ€‹เบชเบนเปˆโ€‹เบฅเบฐโ€‹เบšเบปเบšเบเบฐเบฅเบธเบ™เบฒ.

เบ‚เป‰เบฒเบžเบฐเป€เบˆเบปเป‰เบฒเป„เบ”เป‰เปเบเป‰เป„เบ‚เบšเบฑเบ™เบซเบฒเบชเปเบฒเบฅเบฑเบš

  • เปƒเบ™ เปœเป‰เบญเบ เบเบงเปˆเบฒ 10 เบ™เบฒเบ—เบต

  • 10-30 เบ™เบฒเบ—เบต

  • 30-60 เบ™เบฒเบ—เบต

  • 1-2 เบŠเบปเปˆเบงเป‚เบกเบ‡

  • เปƒเบ™โ€‹เบซเบผเบฒเบโ€‹เบเบงเปˆเบฒ 2 เบŠเบปเปˆเบงโ€‹เป‚เบกเบ‡โ€‹

  • เบญเบทเปˆเบ™เป†

เบœเบนเป‰เปƒเบŠเป‰ 42 เบ„เบปเบ™เบฅเบปเบ‡เบ„เบฐเปเบ™เบ™เบชเบฝเบ‡. 47 เบœเบนเป‰เปƒเบŠเป‰เบ‡เบปเบ”.

เปเบซเบผเปˆเบ‡เบ‚เปเป‰เบกเบนเบ™: www.habr.com

เป€เบžเบตเปˆเบกเบ„เบงเบฒเบกเบ„เบดเบ”เป€เบซเบฑเบ™