test/cpv_local/geo2d/cvh.bzoj2829.cpp
| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | // competitive-verifier: LOCALCASE test/cpv_local/_data/bzoj/2829 | ||
| 2 | |||
| 3 | #include "../../../src/geo2d/ds/cvh/lib.hpp" | ||
| 4 | |||
| 5 | using namespace tifa_libs; | ||
| 6 | using std::cin, std::cout; | ||
| 7 | using data_t = f64; | ||
| 8 | using Point2 = point<data_t>; | ||
| 9 | using Line2 = line<data_t>; | ||
| 10 | using ConvexHull2 = cvh<data_t>; | ||
| 11 | |||
| 12 | CEXP data_t PI = std::numbers::pi_v<data_t>; | ||
| 13 | |||
| 14 | 10 | int main() { | |
| 15 |
1/2✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
10 | cout << std::fixed << std::setprecision(2); |
| 16 | 10 | set_eps<data_t>(1e-9); | |
| 17 | |||
| 18 | u32 n; | ||
| 19 |
1/2✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
10 | cin >> n; |
| 20 | data_t a, b, r; | ||
| 21 |
3/6✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
|
10 | cin >> b >> a >> r; |
| 22 | 10 | Point2 d[4]{Point2{a / 2 - r, b / 2 - r}, Point2{-a / 2 + r, b / 2 - r}, Point2{a / 2 - r, -b / 2 + r}, Point2{-a / 2 + r, -b / 2 + r}}; | |
| 23 | 10 | vec<Point2> vp; | |
| 24 |
1/2✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
|
10 | vp.reserve(n); |
| 25 | data_t x, y, theta; | ||
| 26 |
2/2✓ Branch 0 taken 30209 times.
✓ Branch 1 taken 10 times.
|
30219 | for (u32 i = 1; i <= n; ++i) { |
| 27 |
3/6✓ Branch 1 taken 30209 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 30209 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 30209 times.
✗ Branch 8 not taken.
|
30209 | cin >> x >> y >> theta; |
| 28 | 30209 | Point2 c{x, y}; | |
| 29 |
3/4✓ Branch 3 taken 120836 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 120836 times.
✓ Branch 6 taken 30209 times.
|
151045 | for (const auto& j : d) vp.push_back(c + rot(j, theta)); |
| 30 | } | ||
| 31 |
2/4✓ Branch 4 taken 10 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 10 times.
✗ Branch 8 not taken.
|
10 | cout << ConvexHull2(vp).circum() + r * PI * 2 << '\n'; |
| 32 | 10 | } | |
| 33 |