Submission #443240

# Submission time Handle Problem Language Result Execution time Memory
443240 2021-07-10T08:22:52 Z nickyrio Segments (IZhO18_segments) C++17
100 / 100
2327 ms 8828 KB
#include <bits/stdc++.h>

using namespace std;

int lastans = 0, t;
int decode(int x) { return x ^ (t * lastans); }

const int NUM_BLOCK = 500;
const int BLOCK_SIZE = 1500;

class Solver {
    
    vector< pair<int, int> > pending, all;
    vector< int > left_base[NUM_BLOCK], right_base[NUM_BLOCK];

    int intersect(pair<int, int> a, pair<int, int> b, int k) {
        int l = max(a.first, b.first), r = min(b.second, a.second);
        return r - l + 1 >= k;
    }

    void rebuild() {
        // cerr << "Rebuilding...\n";
        vector< pair<int, int> > temp(all.size() + pending.size());
        merge(pending.begin(), pending.end(), all.begin(), all.end(), temp.begin());
        pending.clear();
        swap(temp, all);

        sort(all.begin(), all.end(), [&](const pair<int, int>&a, const pair<int, int>&b) {
                return a.second - a.first < b.second - b.first;
        });
        for (int l = 0; l < all.size(); l += BLOCK_SIZE) {
            left_base[l / BLOCK_SIZE].clear();
            right_base[l / BLOCK_SIZE].clear();
        }
        for (int l = 0; l < all.size(); l += BLOCK_SIZE) {
            int id = l / BLOCK_SIZE;
            int r = min(l + BLOCK_SIZE, (int)all.size());
            for (int i = l; i < r; ++i) {
                // cerr << "Add " << all[i].first << ' ' << all[i].second << " to block " << id << '\n';
                left_base[id].push_back(all[i].first);
                right_base[id].push_back(all[i].second);
            }
        }
      for (int id = 0; id * BLOCK_SIZE < all.size(); ++id) {
            sort(left_base[id].begin(), left_base[id].end());
            sort(right_base[id].begin(), right_base[id].end());
        }
    }
public:
    void add(int l, int r) {
        // cerr << "Add segment [" << l << ',' << r << "]\n";
        pending.emplace_back(l, r);
        if (pending.size() >= BLOCK_SIZE) rebuild();
    }

    int query(pair<int, int> q_seg, int k) {
        // cerr << "Query segment [" << q_seg.first << ',' << q_seg.second << "] with k = " << k << '\n';
        if (q_seg.second - q_seg.first + 1 < k) return 0;
        int ans = 0;
        for (auto seg : pending) ans += intersect(q_seg, seg, k);
        for (int l = 0; l < all.size(); l += BLOCK_SIZE) {
            int id = l / BLOCK_SIZE, r = min(l + BLOCK_SIZE, (int) all.size()) - 1;
            // cerr << "Query block " << id <<' ' << all[l].first << ' ' << all[l].second << '\n';
            if (all[l].second - all[l].first + 1 >= k) {
                int cur = 0;
                ans += r - l + 1;
                // [l, l + k - 1] -> remove R < l + k - 1
                ans -= lower_bound(right_base[id].begin(), right_base[id].end(), q_seg.first + k - 1) - right_base[id].begin();
                // [r - k + 1, r] -> remove L > r - k + 1
                ans -= left_base[id].end() - upper_bound(left_base[id].begin(), left_base[id].end(), q_seg.second - k + 1);
            } else {
                if (all[r].second - all[r].first + 1 >= k) {
                    // Trigger only one block
                    for (int i = l; i <= r; ++i) ans += intersect(q_seg, all[i], k);
                }
            }
        }
        return ans;
    }
}addSolver, delSolver;
vector< pair<int, int> > history;

int main() {
    ios::sync_with_stdio(false); cin.tie(NULL);
    int n;
    cin >> n >> t;
    for (int i = 0; i < n; ++i) {
        int type;
        cin >> type;
        if (type == 1) {
            int l, r;
            cin >> l >> r;
            l = decode(l), r = decode(r);
            if (l > r) swap(l, r);
            history.emplace_back(l, r);
            addSolver.add(l, r);
        } else if (type == 2) {
            int id; cin >> id;
            auto [l, r] = history[id - 1];
            delSolver.add(l, r);
        } else {
            int l, r, k; cin >> l >> r >> k;
            l = decode(l), r = decode(r);
            if (l > r) swap(l, r);
            lastans = addSolver.query({l, r}, k) - delSolver.query({l, r}, k);
            cout << lastans << '\n';
        }
    }
}

Compilation message

segments.cpp: In member function 'void Solver::rebuild()':
segments.cpp:31:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   31 |         for (int l = 0; l < all.size(); l += BLOCK_SIZE) {
      |                         ~~^~~~~~~~~~~~
segments.cpp:35:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   35 |         for (int l = 0; l < all.size(); l += BLOCK_SIZE) {
      |                         ~~^~~~~~~~~~~~
segments.cpp:44:40: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   44 |       for (int id = 0; id * BLOCK_SIZE < all.size(); ++id) {
      |                        ~~~~~~~~~~~~~~~~^~~~~~~~~~~~
segments.cpp: In member function 'int Solver::query(std::pair<int, int>, int)':
segments.cpp:61:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<int, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   61 |         for (int l = 0; l < all.size(); l += BLOCK_SIZE) {
      |                         ~~^~~~~~~~~~~~
segments.cpp:65:21: warning: unused variable 'cur' [-Wunused-variable]
   65 |                 int cur = 0;
      |                     ^~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 360 KB Output is correct
3 Correct 8 ms 488 KB Output is correct
4 Correct 8 ms 504 KB Output is correct
5 Correct 9 ms 628 KB Output is correct
6 Correct 9 ms 588 KB Output is correct
7 Correct 8 ms 588 KB Output is correct
8 Correct 6 ms 588 KB Output is correct
9 Correct 7 ms 596 KB Output is correct
10 Correct 4 ms 588 KB Output is correct
11 Correct 14 ms 592 KB Output is correct
12 Correct 14 ms 596 KB Output is correct
13 Correct 5 ms 588 KB Output is correct
14 Correct 8 ms 504 KB Output is correct
15 Correct 8 ms 532 KB Output is correct
16 Correct 8 ms 588 KB Output is correct
17 Correct 8 ms 460 KB Output is correct
18 Correct 5 ms 588 KB Output is correct
19 Correct 8 ms 460 KB Output is correct
20 Correct 8 ms 564 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 503 ms 3872 KB Output is correct
2 Correct 507 ms 3968 KB Output is correct
3 Correct 531 ms 3780 KB Output is correct
4 Correct 537 ms 3844 KB Output is correct
5 Correct 576 ms 5632 KB Output is correct
6 Correct 591 ms 5784 KB Output is correct
7 Correct 557 ms 3756 KB Output is correct
8 Correct 494 ms 3768 KB Output is correct
9 Correct 493 ms 3812 KB Output is correct
10 Correct 570 ms 3108 KB Output is correct
11 Correct 418 ms 3224 KB Output is correct
12 Correct 577 ms 4436 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 335 ms 3908 KB Output is correct
2 Correct 330 ms 3836 KB Output is correct
3 Correct 335 ms 3836 KB Output is correct
4 Correct 335 ms 3728 KB Output is correct
5 Correct 521 ms 4584 KB Output is correct
6 Correct 469 ms 4152 KB Output is correct
7 Correct 499 ms 4332 KB Output is correct
8 Correct 581 ms 5508 KB Output is correct
9 Correct 562 ms 5716 KB Output is correct
10 Correct 468 ms 5192 KB Output is correct
11 Correct 334 ms 4424 KB Output is correct
12 Correct 471 ms 5228 KB Output is correct
13 Correct 425 ms 4972 KB Output is correct
14 Correct 347 ms 4560 KB Output is correct
15 Correct 341 ms 4580 KB Output is correct
16 Correct 328 ms 4732 KB Output is correct
17 Correct 417 ms 3796 KB Output is correct
18 Correct 418 ms 3888 KB Output is correct
19 Correct 421 ms 3788 KB Output is correct
20 Correct 417 ms 3948 KB Output is correct
21 Correct 335 ms 4324 KB Output is correct
22 Correct 386 ms 4728 KB Output is correct
23 Correct 406 ms 4748 KB Output is correct
24 Correct 387 ms 4596 KB Output is correct
25 Correct 337 ms 3732 KB Output is correct
26 Correct 331 ms 3772 KB Output is correct
27 Correct 329 ms 3876 KB Output is correct
28 Correct 325 ms 3780 KB Output is correct
29 Correct 415 ms 4744 KB Output is correct
30 Correct 421 ms 4636 KB Output is correct
31 Correct 555 ms 5624 KB Output is correct
32 Correct 478 ms 5188 KB Output is correct
33 Correct 427 ms 4672 KB Output is correct
34 Correct 347 ms 4760 KB Output is correct
35 Correct 396 ms 4832 KB Output is correct
36 Correct 429 ms 5148 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 486 ms 3988 KB Output is correct
2 Correct 464 ms 3744 KB Output is correct
3 Correct 481 ms 3744 KB Output is correct
4 Correct 482 ms 3700 KB Output is correct
5 Correct 540 ms 4600 KB Output is correct
6 Correct 405 ms 2820 KB Output is correct
7 Correct 531 ms 5164 KB Output is correct
8 Correct 539 ms 2972 KB Output is correct
9 Correct 457 ms 4564 KB Output is correct
10 Correct 510 ms 5300 KB Output is correct
11 Correct 476 ms 4352 KB Output is correct
12 Correct 588 ms 5632 KB Output is correct
13 Correct 480 ms 4716 KB Output is correct
14 Correct 473 ms 4412 KB Output is correct
15 Correct 563 ms 5556 KB Output is correct
16 Correct 485 ms 5268 KB Output is correct
17 Correct 503 ms 3760 KB Output is correct
18 Correct 498 ms 3776 KB Output is correct
19 Correct 503 ms 3704 KB Output is correct
20 Correct 499 ms 3780 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 360 KB Output is correct
3 Correct 8 ms 488 KB Output is correct
4 Correct 8 ms 504 KB Output is correct
5 Correct 9 ms 628 KB Output is correct
6 Correct 9 ms 588 KB Output is correct
7 Correct 8 ms 588 KB Output is correct
8 Correct 6 ms 588 KB Output is correct
9 Correct 7 ms 596 KB Output is correct
10 Correct 4 ms 588 KB Output is correct
11 Correct 14 ms 592 KB Output is correct
12 Correct 14 ms 596 KB Output is correct
13 Correct 5 ms 588 KB Output is correct
14 Correct 8 ms 504 KB Output is correct
15 Correct 8 ms 532 KB Output is correct
16 Correct 8 ms 588 KB Output is correct
17 Correct 8 ms 460 KB Output is correct
18 Correct 5 ms 588 KB Output is correct
19 Correct 8 ms 460 KB Output is correct
20 Correct 8 ms 564 KB Output is correct
21 Correct 503 ms 3872 KB Output is correct
22 Correct 507 ms 3968 KB Output is correct
23 Correct 531 ms 3780 KB Output is correct
24 Correct 537 ms 3844 KB Output is correct
25 Correct 576 ms 5632 KB Output is correct
26 Correct 591 ms 5784 KB Output is correct
27 Correct 557 ms 3756 KB Output is correct
28 Correct 494 ms 3768 KB Output is correct
29 Correct 493 ms 3812 KB Output is correct
30 Correct 570 ms 3108 KB Output is correct
31 Correct 418 ms 3224 KB Output is correct
32 Correct 577 ms 4436 KB Output is correct
33 Correct 486 ms 3988 KB Output is correct
34 Correct 464 ms 3744 KB Output is correct
35 Correct 481 ms 3744 KB Output is correct
36 Correct 482 ms 3700 KB Output is correct
37 Correct 540 ms 4600 KB Output is correct
38 Correct 405 ms 2820 KB Output is correct
39 Correct 531 ms 5164 KB Output is correct
40 Correct 539 ms 2972 KB Output is correct
41 Correct 457 ms 4564 KB Output is correct
42 Correct 510 ms 5300 KB Output is correct
43 Correct 476 ms 4352 KB Output is correct
44 Correct 588 ms 5632 KB Output is correct
45 Correct 480 ms 4716 KB Output is correct
46 Correct 473 ms 4412 KB Output is correct
47 Correct 563 ms 5556 KB Output is correct
48 Correct 485 ms 5268 KB Output is correct
49 Correct 503 ms 3760 KB Output is correct
50 Correct 498 ms 3776 KB Output is correct
51 Correct 503 ms 3704 KB Output is correct
52 Correct 499 ms 3780 KB Output is correct
53 Correct 483 ms 3896 KB Output is correct
54 Correct 486 ms 3760 KB Output is correct
55 Correct 487 ms 3748 KB Output is correct
56 Correct 483 ms 3824 KB Output is correct
57 Correct 465 ms 3172 KB Output is correct
58 Correct 358 ms 2688 KB Output is correct
59 Correct 556 ms 3952 KB Output is correct
60 Correct 580 ms 2628 KB Output is correct
61 Correct 500 ms 4736 KB Output is correct
62 Correct 554 ms 5480 KB Output is correct
63 Correct 564 ms 5716 KB Output is correct
64 Correct 548 ms 5448 KB Output is correct
65 Correct 471 ms 4692 KB Output is correct
66 Correct 471 ms 4648 KB Output is correct
67 Correct 501 ms 5296 KB Output is correct
68 Correct 477 ms 4936 KB Output is correct
69 Correct 509 ms 3872 KB Output is correct
70 Correct 494 ms 3912 KB Output is correct
71 Correct 511 ms 3776 KB Output is correct
72 Correct 500 ms 3848 KB Output is correct
73 Correct 472 ms 4920 KB Output is correct
74 Correct 489 ms 4784 KB Output is correct
75 Correct 574 ms 5584 KB Output is correct
76 Correct 574 ms 5624 KB Output is correct
77 Correct 474 ms 3788 KB Output is correct
78 Correct 471 ms 3712 KB Output is correct
79 Correct 477 ms 3752 KB Output is correct
80 Correct 482 ms 3776 KB Output is correct
81 Correct 465 ms 4588 KB Output is correct
82 Correct 473 ms 4608 KB Output is correct
83 Correct 477 ms 4432 KB Output is correct
84 Correct 483 ms 4756 KB Output is correct
85 Correct 498 ms 5120 KB Output is correct
86 Correct 498 ms 5128 KB Output is correct
87 Correct 472 ms 4452 KB Output is correct
88 Correct 463 ms 4392 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 332 KB Output is correct
2 Correct 1 ms 360 KB Output is correct
3 Correct 8 ms 488 KB Output is correct
4 Correct 8 ms 504 KB Output is correct
5 Correct 9 ms 628 KB Output is correct
6 Correct 9 ms 588 KB Output is correct
7 Correct 8 ms 588 KB Output is correct
8 Correct 6 ms 588 KB Output is correct
9 Correct 7 ms 596 KB Output is correct
10 Correct 4 ms 588 KB Output is correct
11 Correct 14 ms 592 KB Output is correct
12 Correct 14 ms 596 KB Output is correct
13 Correct 5 ms 588 KB Output is correct
14 Correct 8 ms 504 KB Output is correct
15 Correct 8 ms 532 KB Output is correct
16 Correct 8 ms 588 KB Output is correct
17 Correct 8 ms 460 KB Output is correct
18 Correct 5 ms 588 KB Output is correct
19 Correct 8 ms 460 KB Output is correct
20 Correct 8 ms 564 KB Output is correct
21 Correct 503 ms 3872 KB Output is correct
22 Correct 507 ms 3968 KB Output is correct
23 Correct 531 ms 3780 KB Output is correct
24 Correct 537 ms 3844 KB Output is correct
25 Correct 576 ms 5632 KB Output is correct
26 Correct 591 ms 5784 KB Output is correct
27 Correct 557 ms 3756 KB Output is correct
28 Correct 494 ms 3768 KB Output is correct
29 Correct 493 ms 3812 KB Output is correct
30 Correct 570 ms 3108 KB Output is correct
31 Correct 418 ms 3224 KB Output is correct
32 Correct 577 ms 4436 KB Output is correct
33 Correct 335 ms 3908 KB Output is correct
34 Correct 330 ms 3836 KB Output is correct
35 Correct 335 ms 3836 KB Output is correct
36 Correct 335 ms 3728 KB Output is correct
37 Correct 521 ms 4584 KB Output is correct
38 Correct 469 ms 4152 KB Output is correct
39 Correct 499 ms 4332 KB Output is correct
40 Correct 581 ms 5508 KB Output is correct
41 Correct 562 ms 5716 KB Output is correct
42 Correct 468 ms 5192 KB Output is correct
43 Correct 334 ms 4424 KB Output is correct
44 Correct 471 ms 5228 KB Output is correct
45 Correct 425 ms 4972 KB Output is correct
46 Correct 347 ms 4560 KB Output is correct
47 Correct 341 ms 4580 KB Output is correct
48 Correct 328 ms 4732 KB Output is correct
49 Correct 417 ms 3796 KB Output is correct
50 Correct 418 ms 3888 KB Output is correct
51 Correct 421 ms 3788 KB Output is correct
52 Correct 417 ms 3948 KB Output is correct
53 Correct 335 ms 4324 KB Output is correct
54 Correct 386 ms 4728 KB Output is correct
55 Correct 406 ms 4748 KB Output is correct
56 Correct 387 ms 4596 KB Output is correct
57 Correct 337 ms 3732 KB Output is correct
58 Correct 331 ms 3772 KB Output is correct
59 Correct 329 ms 3876 KB Output is correct
60 Correct 325 ms 3780 KB Output is correct
61 Correct 415 ms 4744 KB Output is correct
62 Correct 421 ms 4636 KB Output is correct
63 Correct 555 ms 5624 KB Output is correct
64 Correct 478 ms 5188 KB Output is correct
65 Correct 427 ms 4672 KB Output is correct
66 Correct 347 ms 4760 KB Output is correct
67 Correct 396 ms 4832 KB Output is correct
68 Correct 429 ms 5148 KB Output is correct
69 Correct 486 ms 3988 KB Output is correct
70 Correct 464 ms 3744 KB Output is correct
71 Correct 481 ms 3744 KB Output is correct
72 Correct 482 ms 3700 KB Output is correct
73 Correct 540 ms 4600 KB Output is correct
74 Correct 405 ms 2820 KB Output is correct
75 Correct 531 ms 5164 KB Output is correct
76 Correct 539 ms 2972 KB Output is correct
77 Correct 457 ms 4564 KB Output is correct
78 Correct 510 ms 5300 KB Output is correct
79 Correct 476 ms 4352 KB Output is correct
80 Correct 588 ms 5632 KB Output is correct
81 Correct 480 ms 4716 KB Output is correct
82 Correct 473 ms 4412 KB Output is correct
83 Correct 563 ms 5556 KB Output is correct
84 Correct 485 ms 5268 KB Output is correct
85 Correct 503 ms 3760 KB Output is correct
86 Correct 498 ms 3776 KB Output is correct
87 Correct 503 ms 3704 KB Output is correct
88 Correct 499 ms 3780 KB Output is correct
89 Correct 483 ms 3896 KB Output is correct
90 Correct 486 ms 3760 KB Output is correct
91 Correct 487 ms 3748 KB Output is correct
92 Correct 483 ms 3824 KB Output is correct
93 Correct 465 ms 3172 KB Output is correct
94 Correct 358 ms 2688 KB Output is correct
95 Correct 556 ms 3952 KB Output is correct
96 Correct 580 ms 2628 KB Output is correct
97 Correct 500 ms 4736 KB Output is correct
98 Correct 554 ms 5480 KB Output is correct
99 Correct 564 ms 5716 KB Output is correct
100 Correct 548 ms 5448 KB Output is correct
101 Correct 471 ms 4692 KB Output is correct
102 Correct 471 ms 4648 KB Output is correct
103 Correct 501 ms 5296 KB Output is correct
104 Correct 477 ms 4936 KB Output is correct
105 Correct 509 ms 3872 KB Output is correct
106 Correct 494 ms 3912 KB Output is correct
107 Correct 511 ms 3776 KB Output is correct
108 Correct 500 ms 3848 KB Output is correct
109 Correct 472 ms 4920 KB Output is correct
110 Correct 489 ms 4784 KB Output is correct
111 Correct 574 ms 5584 KB Output is correct
112 Correct 574 ms 5624 KB Output is correct
113 Correct 474 ms 3788 KB Output is correct
114 Correct 471 ms 3712 KB Output is correct
115 Correct 477 ms 3752 KB Output is correct
116 Correct 482 ms 3776 KB Output is correct
117 Correct 465 ms 4588 KB Output is correct
118 Correct 473 ms 4608 KB Output is correct
119 Correct 477 ms 4432 KB Output is correct
120 Correct 483 ms 4756 KB Output is correct
121 Correct 498 ms 5120 KB Output is correct
122 Correct 498 ms 5128 KB Output is correct
123 Correct 472 ms 4452 KB Output is correct
124 Correct 463 ms 4392 KB Output is correct
125 Correct 1352 ms 5632 KB Output is correct
126 Correct 1351 ms 5644 KB Output is correct
127 Correct 1365 ms 5552 KB Output is correct
128 Correct 1343 ms 5664 KB Output is correct
129 Correct 1353 ms 5568 KB Output is correct
130 Correct 1363 ms 5612 KB Output is correct
131 Correct 950 ms 3364 KB Output is correct
132 Correct 1529 ms 5564 KB Output is correct
133 Correct 1912 ms 6412 KB Output is correct
134 Correct 1271 ms 3832 KB Output is correct
135 Correct 1936 ms 6696 KB Output is correct
136 Correct 843 ms 2760 KB Output is correct
137 Correct 2252 ms 8376 KB Output is correct
138 Correct 1707 ms 7996 KB Output is correct
139 Correct 1949 ms 8384 KB Output is correct
140 Correct 2177 ms 8396 KB Output is correct
141 Correct 1817 ms 7756 KB Output is correct
142 Correct 1378 ms 8416 KB Output is correct
143 Correct 1392 ms 7420 KB Output is correct
144 Correct 1346 ms 8828 KB Output is correct
145 Correct 2188 ms 8480 KB Output is correct
146 Correct 1483 ms 7580 KB Output is correct
147 Correct 1403 ms 7992 KB Output is correct
148 Correct 1388 ms 7836 KB Output is correct
149 Correct 1653 ms 5644 KB Output is correct
150 Correct 1631 ms 5704 KB Output is correct
151 Correct 1664 ms 5732 KB Output is correct
152 Correct 1640 ms 5844 KB Output is correct
153 Correct 1664 ms 5768 KB Output is correct
154 Correct 1652 ms 5640 KB Output is correct
155 Correct 1375 ms 6700 KB Output is correct
156 Correct 1434 ms 7332 KB Output is correct
157 Correct 2117 ms 8552 KB Output is correct
158 Correct 2286 ms 8388 KB Output is correct
159 Correct 1776 ms 7988 KB Output is correct
160 Correct 1568 ms 8132 KB Output is correct
161 Correct 1345 ms 5588 KB Output is correct
162 Correct 1375 ms 5604 KB Output is correct
163 Correct 1338 ms 5504 KB Output is correct
164 Correct 1335 ms 5708 KB Output is correct
165 Correct 1345 ms 5636 KB Output is correct
166 Correct 1347 ms 5704 KB Output is correct
167 Correct 2288 ms 8584 KB Output is correct
168 Correct 2327 ms 8452 KB Output is correct
169 Correct 2157 ms 8380 KB Output is correct
170 Correct 2087 ms 8256 KB Output is correct
171 Correct 1839 ms 7896 KB Output is correct
172 Correct 1494 ms 7264 KB Output is correct
173 Correct 2074 ms 8392 KB Output is correct
174 Correct 1477 ms 7872 KB Output is correct
175 Correct 1922 ms 8216 KB Output is correct
176 Correct 1373 ms 7760 KB Output is correct
177 Correct 1735 ms 7888 KB Output is correct
178 Correct 1682 ms 7992 KB Output is correct