test/cpv_local/geo2d/hahn_banach.uva10256.cpp
| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | // competitive-verifier: LOCALCASE test/cpv_local/_data/uva/10256 | ||
| 2 | |||
| 3 | #include "../../../src/geo2d/ds/cvh/lib.hpp" | ||
| 4 | #include "../../../src/geo2d/pred/is_ins_ss/lib.hpp" | ||
| 5 | #include "../../../src/geo2d/pred/is_on_s/lib.hpp" | ||
| 6 | |||
| 7 | using namespace tifa_libs; | ||
| 8 | using std::cin, std::cout; | ||
| 9 | using data_t = f64; | ||
| 10 | using Polygon2 = cvh<data_t>; | ||
| 11 | |||
| 12 | const arr RES_Yn{"No"s, "Yes"s}; | ||
| 13 | |||
| 14 | 102 | strn single_proceed(u32 n, u32 m) { | |
| 15 | 102 | Polygon2 poly1(n), poly2(m); | |
| 16 | 102 | cin >> poly1 >> poly2; | |
| 17 | 102 | poly1.init(); | |
| 18 | 102 | poly2.init(); | |
| 19 |
2/2✓ Branch 5 taken 324 times.
✓ Branch 6 taken 68 times.
|
392 | for (auto CR i : poly1.vs) |
| 20 |
3/4✓ Branch 1 taken 34 times.
✓ Branch 2 taken 290 times.
✓ Branch 5 taken 34 times.
✗ Branch 6 not taken.
|
324 | if (poly2.contains(i)) return RES_Yn[0]; |
| 21 |
2/2✓ Branch 5 taken 192 times.
✓ Branch 6 taken 52 times.
|
244 | for (auto CR i : poly2.vs) |
| 22 |
3/4✓ Branch 1 taken 16 times.
✓ Branch 2 taken 176 times.
✓ Branch 5 taken 16 times.
✗ Branch 6 not taken.
|
192 | if (poly1.contains(i)) return RES_Yn[0]; |
| 23 |
6/6✓ Branch 1 taken 39 times.
✓ Branch 2 taken 13 times.
✓ Branch 4 taken 29 times.
✓ Branch 5 taken 10 times.
✓ Branch 6 taken 29 times.
✓ Branch 7 taken 23 times.
|
52 | if (poly1.size() > 1 && poly2.size() > 1) { |
| 24 |
2/2✓ Branch 6 taken 97 times.
✓ Branch 7 taken 26 times.
|
123 | for (auto it = begin(poly1.vs), itn = it + 1; it != end(poly1.vs); ++it, ++itn) { |
| 25 |
2/2✓ Branch 2 taken 26 times.
✓ Branch 3 taken 71 times.
|
97 | if (itn == end(poly1.vs)) itn = begin(poly1.vs); |
| 26 |
2/2✓ Branch 6 taken 338 times.
✓ Branch 7 taken 94 times.
|
432 | for (auto it2 = begin(poly2.vs), it2n = it2 + 1; it2 != end(poly2.vs); ++it2, ++it2n) { |
| 27 |
2/2✓ Branch 2 taken 94 times.
✓ Branch 3 taken 244 times.
|
338 | if (it2n == end(poly2.vs)) it2n = begin(poly2.vs); |
| 28 |
3/4✓ Branch 7 taken 3 times.
✓ Branch 8 taken 335 times.
✓ Branch 11 taken 3 times.
✗ Branch 12 not taken.
|
338 | if (is_ins_SS<data_t>({*it, *itn}, {*it2, *it2n})) return RES_Yn[0]; |
| 29 | } | ||
| 30 | } | ||
| 31 | } else { | ||
| 32 |
8/12✓ Branch 1 taken 13 times.
✓ Branch 2 taken 10 times.
✓ Branch 4 taken 3 times.
✓ Branch 5 taken 10 times.
✓ Branch 6 taken 3 times.
✓ Branch 7 taken 20 times.
✗ Branch 11 not taken.
✓ Branch 12 taken 3 times.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✓ Branch 20 taken 3 times.
✗ Branch 21 not taken.
|
23 | if (poly1.size() == 1 && poly2.size() == 1) return RES_Yn[!is_eq(poly1[0].x, poly2[0].x) || !is_eq(poly1[0].y, poly2[0].y)]; |
| 33 |
4/8✓ Branch 1 taken 10 times.
✓ Branch 2 taken 10 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 10 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 20 times.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
|
20 | if (poly1.size() == 1 && poly2.size() == 2) return RES_Yn[!is_on_S<data_t>({poly2[0], poly2[1]}, poly1[0])]; |
| 34 |
6/8✓ Branch 1 taken 3 times.
✓ Branch 2 taken 17 times.
✓ Branch 4 taken 3 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 3 times.
✓ Branch 7 taken 17 times.
✓ Branch 15 taken 3 times.
✗ Branch 16 not taken.
|
20 | if (poly1.size() == 2 && poly2.size() == 1) return RES_Yn[!is_on_S<data_t>({poly1[0], poly1[1]}, poly2[0])]; |
| 35 |
2/8✗ Branch 1 not taken.
✓ Branch 2 taken 17 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 17 times.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
17 | if (poly1.size() == 2 && poly2.size() == 2) return RES_Yn[!is_ins_SS<data_t>({poly1[0], poly1[1]}, {poly2[0], poly2[1]})]; |
| 36 | } | ||
| 37 |
1/2✓ Branch 2 taken 43 times.
✗ Branch 3 not taken.
|
43 | return RES_Yn[1]; |
| 38 | 102 | } | |
| 39 | |||
| 40 | 2 | int main() { | |
| 41 | u32 n, m; | ||
| 42 |
10/16✓ Branch 1 taken 102 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 102 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 102 times.
✗ Branch 8 not taken.
✓ Branch 11 taken 104 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 104 times.
✗ Branch 15 not taken.
✓ Branch 16 taken 102 times.
✓ Branch 17 taken 2 times.
✓ Branch 18 taken 102 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 102 times.
✓ Branch 21 taken 2 times.
|
104 | while ((cin >> n >> m), n && m) cout << single_proceed(n, m) << '\n'; |
| 43 | 2 | } | |
| 44 |