GCC Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 100.0% 24 / 0 / 24
Functions: 100.0% 2 / 0 / 2
Branches: 69.0% 58 / 0 / 84

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