test/cpv_local/geo2d/cvh_area.uva10652.cpp
| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | // competitive-verifier: LOCALCASE test/cpv_local/_data/uva/10652 | ||
| 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 ConvexHull2 = cvh<data_t>; | ||
| 10 | |||
| 11 | CEXP data_t PI = pi_v<data_t>; | ||
| 12 | |||
| 13 | 4 | int main() { | |
| 14 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | cout << std::fixed << std::setprecision(1); |
| 15 | |||
| 16 | u32 t; | ||
| 17 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | cin >> t; |
| 18 |
2/2✓ Branch 0 taken 203 times.
✓ Branch 1 taken 4 times.
|
207 | while (t--) { |
| 19 | u32 n; | ||
| 20 |
1/2✓ Branch 1 taken 203 times.
✗ Branch 2 not taken.
|
203 | cin >> n; |
| 21 | 203 | vec<Point2> v; | |
| 22 | data_t x, y, w, h, phi; | ||
| 23 | 203 | data_t ans = 0; | |
| 24 |
2/2✓ Branch 0 taken 21657 times.
✓ Branch 1 taken 203 times.
|
21860 | flt_ (u32, i, 1, n + 1) { |
| 25 |
5/10✓ Branch 1 taken 21657 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 21657 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 21657 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 21657 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 21657 times.
✗ Branch 14 not taken.
|
21657 | cin >> x >> y >> w >> h >> phi; |
| 26 | 21657 | phi = phi * PI / 180; | |
| 27 |
2/2✓ Branch 0 taken 10646 times.
✓ Branch 1 taken 11011 times.
|
21657 | if (phi < 0) phi += 2 * PI; |
| 28 | 21657 | phi = -phi; | |
| 29 | 21657 | ans += w * h; | |
| 30 | 21657 | Point2 c{x, y}; | |
| 31 |
1/2✓ Branch 4 taken 21657 times.
✗ Branch 5 not taken.
|
21657 | v.emplace_back(c + Point2{w / 2, h / 2}.do_rot(phi)); |
| 32 |
1/2✓ Branch 4 taken 21657 times.
✗ Branch 5 not taken.
|
21657 | v.emplace_back(c + Point2{-w / 2, h / 2}.do_rot(phi)); |
| 33 |
1/2✓ Branch 4 taken 21657 times.
✗ Branch 5 not taken.
|
21657 | v.emplace_back(c + Point2{w / 2, -h / 2}.do_rot(phi)); |
| 34 |
1/2✓ Branch 4 taken 21657 times.
✗ Branch 5 not taken.
|
21657 | v.emplace_back(c + Point2{-w / 2, -h / 2}.do_rot(phi)); |
| 35 | } | ||
| 36 |
2/4✓ Branch 5 taken 203 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 203 times.
✗ Branch 9 not taken.
|
203 | cout << ans * 100 / ConvexHull2{v}.init().area() << " %\n"; |
| 37 | 203 | } | |
| 38 | 4 | } | |
| 39 |