verify/geometry/convex_hull_abc286ex_test_.nim

This documentation is automatically generated by online-judge-tools/verification-helper

:warning: verify/geometry/convex_hull_abc286ex_test_.nim

Depends on

Code

# verification-helper: PROBLEM https://atcoder.jp/contests/abc286/tasks/abc286_ex
# verification-helper: ERROR 1e-6
import sequtils, strutils, std/math
import cplib/geometry/base
import cplib/geometry/polygon
import cplib/geometry/intersect
import cplib/geometry/distance

var n = stdin.readLine.parseInt
proc get(): (int, int) =
    var s = stdin.readLine.split.map(parseInt)
    return (s[0], s[1])
var v = newSeqWith(n, initPoint(get()))
var s = initPoint(get())
var t = initPoint(get())
proc valid(): bool =
    for i in 0..<n:
        var p1 = v[i]
        var p2 = v[(i+1) mod n]
        if intersect(initSegment(s, t), initSegment(p1, p2)): return true
    return false
if not valid():
    echo sqrt(float(norm(s - t)))
    quit()
var vi = convex_hull(v & @[s, t])
var pos: int
for i in 0..<vi.len:
    if vi.v[i] == s: (pos = i; break)
vi.v = vi.v[pos..<vi.len] & vi.v[0..<pos]
for i in 0..<vi.len:
    if vi.v[i] == t: (pos = i; break)
var a1, a2 = 0.0
for i in 0..<pos:
    a1 += float(norm(vi.v[i], vi.v[i+1])).sqrt

for i in 1..<(vi.len-pos):
    a2 += float(norm(vi.v[^(i)], vi.v[^(i+1)])).sqrt
a2 += float(norm(vi.v[^1], vi.v[0])).sqrt
echo min(a1, a2)
Traceback (most recent call last):
  File "/home/runner/.local/lib/python3.12/site-packages/onlinejudge_verify/documentation/build.py", line 71, in _render_source_code_stat
    bundled_code = language.bundle(stat.path, basedir=basedir, options={'include_paths': [basedir]}).decode()
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/home/runner/.local/lib/python3.12/site-packages/onlinejudge_verify/languages/nim.py", line 86, in bundle
    raise NotImplementedError
NotImplementedError
Back to top page