GCC Code Coverage Report


Directory: ./
Coverage: low: ≥ 0% medium: ≥ 75.0% high: ≥ 90.0%
Coverage Exec / Excl / Total
Lines: 95.3% 41 / 0 / 43
Functions: 100.0% 1 / 0 / 1
Branches: 61.3% 65 / 0 / 106

test/cpv_local/geo2d/cvh.uva675.cpp
Line Branch Exec Source
1 // competitive-verifier: LOCALCASE test/cpv_local/_data/uva/675
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 3 int main() {
12
1/2
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
3 cout << std::fixed << std::setprecision(0);
13
14 3 strn s;
15 3 vec<Point2> vp;
16
17
4/6
✓ Branch 1 taken 99 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 99 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 96 times.
✓ Branch 7 taken 3 times.
99 while (std::getline(cin, s)) {
18
2/2
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 88 times.
96 if (s.find(',') == strn::npos) {
19
1/2
✗ Branch 1 not taken.
✓ Branch 2 taken 8 times.
8 if (vp.empty()) continue;
20
21
1/2
✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
8 map<Point2, int> id;
22 8 int cnt = 0;
23
2/2
✓ Branch 5 taken 68 times.
✓ Branch 6 taken 8 times.
76 for (auto CR p : vp)
24
4/6
✓ Branch 1 taken 68 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 59 times.
✓ Branch 4 taken 9 times.
✓ Branch 6 taken 59 times.
✗ Branch 7 not taken.
68 if (!id[p]) id[p] = ++cnt;
25 8 ConvexHull2 poly{vp};
26 8 auto&& now = poly.vs;
27 8 usz start = 0;
28
1/2
✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
8 int start_id = id[now[0]];
29
2/2
✓ Branch 1 taken 35 times.
✓ Branch 2 taken 8 times.
43 flt_ (usz, i, 1, now.size())
30
3/4
✓ Branch 2 taken 35 times.
✗ Branch 3 not taken.
✓ Branch 4 taken 7 times.
✓ Branch 5 taken 28 times.
35 if (id[now[i]] < start_id) {
31 7 start = i;
32
1/2
✓ Branch 2 taken 7 times.
✗ Branch 3 not taken.
7 start_id = id[now[i]];
33 }
34
6/10
✓ Branch 3 taken 25 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 25 times.
✗ Branch 7 not taken.
✓ Branch 10 taken 25 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 25 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 25 times.
✓ Branch 16 taken 8 times.
33 flt_ (usz, i, start, now.size()) cout << now[i].x << ", " << now[i].y << '\n';
35
6/10
✓ Branch 2 taken 26 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 26 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 26 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 26 times.
✗ Branch 13 not taken.
✓ Branch 14 taken 26 times.
✓ Branch 15 taken 8 times.
34 flt_ (usz, i, 0, start + 1) cout << now[i].x << ", " << now[i].y << '\n';
36
1/2
✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
8 cout << '\n';
37
38 8 vp.clear();
39 8 } else {
40 data_t x, y;
41 char ch;
42
4/8
✓ Branch 2 taken 88 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 88 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 88 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 88 times.
✗ Branch 12 not taken.
88 std::stringstream{s} >> x >> ch >> y;
43
1/2
✓ Branch 1 taken 88 times.
✗ Branch 2 not taken.
88 vp.emplace_back(x, y);
44 }
45 }
46
47
1/2
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
3 if (!vp.empty()) {
48
1/2
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
3 map<Point2, int> id;
49 3 int cnt = 0;
50
2/2
✓ Branch 5 taken 20 times.
✓ Branch 6 taken 3 times.
23 for (auto CR p : vp)
51
4/6
✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 14 times.
✓ Branch 4 taken 6 times.
✓ Branch 6 taken 14 times.
✗ Branch 7 not taken.
20 if (!id[p]) id[p] = ++cnt;
52 3 ConvexHull2 poly{vp};
53 3 auto&& now = poly.vs;
54 3 usz start = 0;
55
1/2
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
3 int start_id = id[now[0]];
56
2/2
✓ Branch 1 taken 8 times.
✓ Branch 2 taken 3 times.
11 flt_ (usz, i, 1, now.size())
57
2/4
✓ Branch 2 taken 8 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 8 times.
8 if (id[now[i]] < start_id) {
58 start = i;
59 start_id = id[now[i]];
60 }
61
6/10
✓ Branch 3 taken 11 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 11 times.
✗ Branch 7 not taken.
✓ Branch 10 taken 11 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 11 times.
✗ Branch 14 not taken.
✓ Branch 15 taken 11 times.
✓ Branch 16 taken 3 times.
14 flt_ (usz, i, start, now.size()) cout << now[i].x << ", " << now[i].y << '\n';
62
6/10
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 3 times.
✗ Branch 6 not taken.
✓ Branch 9 taken 3 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 3 times.
✗ Branch 13 not taken.
✓ Branch 14 taken 3 times.
✓ Branch 15 taken 3 times.
6 flt_ (usz, i, 0, start + 1) cout << now[i].x << ", " << now[i].y << '\n';
63 3 }
64 3 }
65