# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
69760 |
2018-08-21T13:03:48 Z |
Noam527 |
Wiring (IOI17_wiring) |
C++17 |
|
67 ms |
69816 KB |
#include "wiring.h"
#include <bits/stdc++.h>
#define endl '\n'
#define fast ios::sync_with_stdio(0), cin.tie(0), cout.tie(0)
#define debug cout << "ok" << endl
#define finish(x) return cout << x << endl, 0
typedef long long ll;
typedef long double ldb;
const int md = 1e9 + 7;
const ll hs = 199, inf = 1e16;
const ldb eps = 1e-9, pi = acos(-1);
using namespace std;
ll min_total_length(vector<int> r, vector<int> b) {
int n = r.size() + b.size();
vector<int> a(n), col(n);
vector<ll> dp(n);
int p1 = 0, p2 = 0;
while (p1 < r.size() && p2 < b.size()) {
if (r[p1] < b[p2])
a[p1 + p2] = r[p1], col[p1 + p2] = 0, p1++;
else
a[p1 + p2] = b[p2], col[p1 + p2] = 1, p2++;
}
while (p1 < r.size())
a[p1 + p2] = r[p1], col[p1 + p2] = 0, p1++;
while (p2 < b.size())
a[p1 + p2] = b[p2], col[p1 + p2] = 1, p2++;
vector<int> pos;
pos.push_back(0);
for (int i = 1; i < n; i++)
if (col[i] != col[i - 1]) pos.push_back(i);
for (int i = pos[0]; i < pos[1]; i++) dp[i] = inf;
vector<ll> mn(n);
ll curval;
for (int ind = 1, S, T, nxt; ind < pos.size(); ind++) {
S = pos[ind - 1];
T = pos[ind];
nxt = (ind + 1 < pos.size() ? pos[ind + 1] : n);
// part 1
curval = 0;
for (int j = T - 1; j >= S; j--) {
curval += a[T - 1] - a[j];
if (j > 0)
mn[j] = min(dp[j - 1], dp[j]) + curval;
else
mn[j] = curval;
if (j + 1 < T) mn[j] = min(mn[j], mn[j + 1]);
}
curval = 0;
for (int j = T; j < nxt; j++) {
curval += a[j] - a[T - 1];
dp[j] = curval + mn[max(S, 2 * T - j - 1)];
}
// part 2
curval = 0;
for (int j = S; j < T; j++)
curval += a[T] - a[j];
for (int j = S; j < T; j++) {
if (j > 0)
mn[j] = min(dp[j - 1], dp[j]) + curval;
else
mn[j] = curval;
if (S < j) mn[j] = min(mn[j], mn[j - 1]);
curval -= (a[T] - a[j]);
}
curval = 0;
for (int j = T; j < nxt; j++) {
curval += (a[j] - a[T]);
if (S <= 2 * T - j - 1)
dp[j] = min(dp[j], curval + mn[2 * T - j - 1]);
}
}
return dp.back();
}
/*
int main() {
int n, m;
cin >> n >> m;
vector<int> a(n), b(m);
for (auto &i : a) cin >> i;
for (auto &i : b) cin >> i;
cout << min_total_length(a, b) << endl;
}
*/
Compilation message
wiring.cpp: In function 'll min_total_length(std::vector<int>, std::vector<int>)':
wiring.cpp:19:12: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
while (p1 < r.size() && p2 < b.size()) {
~~~^~~~~~~~~~
wiring.cpp:19:29: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
while (p1 < r.size() && p2 < b.size()) {
~~~^~~~~~~~~~
wiring.cpp:25:12: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
while (p1 < r.size())
~~~^~~~~~~~~~
wiring.cpp:27:12: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
while (p2 < b.size())
~~~^~~~~~~~~~
wiring.cpp:38:35: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
for (int ind = 1, S, T, nxt; ind < pos.size(); ind++) {
~~~~^~~~~~~~~~~~
wiring.cpp:41:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
nxt = (ind + 1 < pos.size() ? pos[ind + 1] : n);
~~~~~~~~^~~~~~~~~~~~
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
248 KB |
Output is correct |
2 |
Correct |
2 ms |
380 KB |
Output is correct |
3 |
Correct |
2 ms |
560 KB |
Output is correct |
4 |
Correct |
2 ms |
560 KB |
Output is correct |
5 |
Correct |
2 ms |
560 KB |
Output is correct |
6 |
Correct |
3 ms |
560 KB |
Output is correct |
7 |
Correct |
2 ms |
560 KB |
Output is correct |
8 |
Correct |
3 ms |
560 KB |
Output is correct |
9 |
Correct |
2 ms |
560 KB |
Output is correct |
10 |
Correct |
3 ms |
560 KB |
Output is correct |
11 |
Correct |
2 ms |
712 KB |
Output is correct |
12 |
Correct |
2 ms |
712 KB |
Output is correct |
13 |
Correct |
3 ms |
712 KB |
Output is correct |
14 |
Correct |
2 ms |
712 KB |
Output is correct |
15 |
Correct |
3 ms |
712 KB |
Output is correct |
16 |
Correct |
2 ms |
712 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
712 KB |
Output is correct |
2 |
Correct |
2 ms |
712 KB |
Output is correct |
3 |
Correct |
36 ms |
5316 KB |
Output is correct |
4 |
Correct |
45 ms |
6780 KB |
Output is correct |
5 |
Correct |
40 ms |
8376 KB |
Output is correct |
6 |
Correct |
42 ms |
11884 KB |
Output is correct |
7 |
Correct |
48 ms |
13704 KB |
Output is correct |
8 |
Correct |
43 ms |
15736 KB |
Output is correct |
9 |
Correct |
49 ms |
17720 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
17720 KB |
Output is correct |
2 |
Correct |
2 ms |
17720 KB |
Output is correct |
3 |
Correct |
46 ms |
17888 KB |
Output is correct |
4 |
Correct |
49 ms |
17888 KB |
Output is correct |
5 |
Correct |
2 ms |
17888 KB |
Output is correct |
6 |
Correct |
3 ms |
17888 KB |
Output is correct |
7 |
Correct |
3 ms |
17888 KB |
Output is correct |
8 |
Correct |
2 ms |
17888 KB |
Output is correct |
9 |
Correct |
2 ms |
17888 KB |
Output is correct |
10 |
Correct |
2 ms |
17888 KB |
Output is correct |
11 |
Correct |
2 ms |
17888 KB |
Output is correct |
12 |
Correct |
3 ms |
17888 KB |
Output is correct |
13 |
Correct |
2 ms |
17888 KB |
Output is correct |
14 |
Correct |
2 ms |
17888 KB |
Output is correct |
15 |
Correct |
2 ms |
17888 KB |
Output is correct |
16 |
Correct |
2 ms |
17888 KB |
Output is correct |
17 |
Correct |
3 ms |
17888 KB |
Output is correct |
18 |
Correct |
44 ms |
17892 KB |
Output is correct |
19 |
Correct |
46 ms |
17904 KB |
Output is correct |
20 |
Correct |
47 ms |
17904 KB |
Output is correct |
21 |
Correct |
55 ms |
17904 KB |
Output is correct |
22 |
Correct |
49 ms |
17904 KB |
Output is correct |
23 |
Correct |
48 ms |
17904 KB |
Output is correct |
24 |
Correct |
47 ms |
18016 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
2 ms |
18016 KB |
Output is correct |
2 |
Correct |
40 ms |
18016 KB |
Output is correct |
3 |
Correct |
44 ms |
18016 KB |
Output is correct |
4 |
Correct |
40 ms |
18016 KB |
Output is correct |
5 |
Correct |
35 ms |
18016 KB |
Output is correct |
6 |
Correct |
2 ms |
18016 KB |
Output is correct |
7 |
Correct |
2 ms |
18016 KB |
Output is correct |
8 |
Correct |
2 ms |
18016 KB |
Output is correct |
9 |
Correct |
2 ms |
18016 KB |
Output is correct |
10 |
Correct |
2 ms |
18016 KB |
Output is correct |
11 |
Correct |
3 ms |
18016 KB |
Output is correct |
12 |
Correct |
3 ms |
18016 KB |
Output is correct |
13 |
Correct |
3 ms |
18016 KB |
Output is correct |
14 |
Correct |
2 ms |
18016 KB |
Output is correct |
15 |
Correct |
2 ms |
18016 KB |
Output is correct |
16 |
Correct |
2 ms |
18016 KB |
Output is correct |
17 |
Correct |
2 ms |
18016 KB |
Output is correct |
18 |
Correct |
38 ms |
18016 KB |
Output is correct |
19 |
Correct |
40 ms |
18016 KB |
Output is correct |
20 |
Correct |
33 ms |
18016 KB |
Output is correct |
21 |
Correct |
33 ms |
18016 KB |
Output is correct |
22 |
Correct |
32 ms |
18016 KB |
Output is correct |
23 |
Correct |
42 ms |
18016 KB |
Output is correct |
24 |
Correct |
35 ms |
18016 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
3 ms |
248 KB |
Output is correct |
2 |
Correct |
2 ms |
380 KB |
Output is correct |
3 |
Correct |
2 ms |
560 KB |
Output is correct |
4 |
Correct |
2 ms |
560 KB |
Output is correct |
5 |
Correct |
2 ms |
560 KB |
Output is correct |
6 |
Correct |
3 ms |
560 KB |
Output is correct |
7 |
Correct |
2 ms |
560 KB |
Output is correct |
8 |
Correct |
3 ms |
560 KB |
Output is correct |
9 |
Correct |
2 ms |
560 KB |
Output is correct |
10 |
Correct |
3 ms |
560 KB |
Output is correct |
11 |
Correct |
2 ms |
712 KB |
Output is correct |
12 |
Correct |
2 ms |
712 KB |
Output is correct |
13 |
Correct |
3 ms |
712 KB |
Output is correct |
14 |
Correct |
2 ms |
712 KB |
Output is correct |
15 |
Correct |
3 ms |
712 KB |
Output is correct |
16 |
Correct |
2 ms |
712 KB |
Output is correct |
17 |
Correct |
3 ms |
712 KB |
Output is correct |
18 |
Correct |
2 ms |
712 KB |
Output is correct |
19 |
Correct |
36 ms |
5316 KB |
Output is correct |
20 |
Correct |
45 ms |
6780 KB |
Output is correct |
21 |
Correct |
40 ms |
8376 KB |
Output is correct |
22 |
Correct |
42 ms |
11884 KB |
Output is correct |
23 |
Correct |
48 ms |
13704 KB |
Output is correct |
24 |
Correct |
43 ms |
15736 KB |
Output is correct |
25 |
Correct |
49 ms |
17720 KB |
Output is correct |
26 |
Correct |
2 ms |
17720 KB |
Output is correct |
27 |
Correct |
2 ms |
17720 KB |
Output is correct |
28 |
Correct |
46 ms |
17888 KB |
Output is correct |
29 |
Correct |
49 ms |
17888 KB |
Output is correct |
30 |
Correct |
2 ms |
17888 KB |
Output is correct |
31 |
Correct |
3 ms |
17888 KB |
Output is correct |
32 |
Correct |
3 ms |
17888 KB |
Output is correct |
33 |
Correct |
2 ms |
17888 KB |
Output is correct |
34 |
Correct |
2 ms |
17888 KB |
Output is correct |
35 |
Correct |
2 ms |
17888 KB |
Output is correct |
36 |
Correct |
2 ms |
17888 KB |
Output is correct |
37 |
Correct |
3 ms |
17888 KB |
Output is correct |
38 |
Correct |
2 ms |
17888 KB |
Output is correct |
39 |
Correct |
2 ms |
17888 KB |
Output is correct |
40 |
Correct |
2 ms |
17888 KB |
Output is correct |
41 |
Correct |
2 ms |
17888 KB |
Output is correct |
42 |
Correct |
3 ms |
17888 KB |
Output is correct |
43 |
Correct |
44 ms |
17892 KB |
Output is correct |
44 |
Correct |
46 ms |
17904 KB |
Output is correct |
45 |
Correct |
47 ms |
17904 KB |
Output is correct |
46 |
Correct |
55 ms |
17904 KB |
Output is correct |
47 |
Correct |
49 ms |
17904 KB |
Output is correct |
48 |
Correct |
48 ms |
17904 KB |
Output is correct |
49 |
Correct |
47 ms |
18016 KB |
Output is correct |
50 |
Correct |
2 ms |
18016 KB |
Output is correct |
51 |
Correct |
40 ms |
18016 KB |
Output is correct |
52 |
Correct |
44 ms |
18016 KB |
Output is correct |
53 |
Correct |
40 ms |
18016 KB |
Output is correct |
54 |
Correct |
35 ms |
18016 KB |
Output is correct |
55 |
Correct |
2 ms |
18016 KB |
Output is correct |
56 |
Correct |
2 ms |
18016 KB |
Output is correct |
57 |
Correct |
2 ms |
18016 KB |
Output is correct |
58 |
Correct |
2 ms |
18016 KB |
Output is correct |
59 |
Correct |
2 ms |
18016 KB |
Output is correct |
60 |
Correct |
3 ms |
18016 KB |
Output is correct |
61 |
Correct |
3 ms |
18016 KB |
Output is correct |
62 |
Correct |
3 ms |
18016 KB |
Output is correct |
63 |
Correct |
2 ms |
18016 KB |
Output is correct |
64 |
Correct |
2 ms |
18016 KB |
Output is correct |
65 |
Correct |
2 ms |
18016 KB |
Output is correct |
66 |
Correct |
2 ms |
18016 KB |
Output is correct |
67 |
Correct |
38 ms |
18016 KB |
Output is correct |
68 |
Correct |
40 ms |
18016 KB |
Output is correct |
69 |
Correct |
33 ms |
18016 KB |
Output is correct |
70 |
Correct |
33 ms |
18016 KB |
Output is correct |
71 |
Correct |
32 ms |
18016 KB |
Output is correct |
72 |
Correct |
42 ms |
18016 KB |
Output is correct |
73 |
Correct |
35 ms |
18016 KB |
Output is correct |
74 |
Correct |
42 ms |
19556 KB |
Output is correct |
75 |
Correct |
38 ms |
21104 KB |
Output is correct |
76 |
Correct |
44 ms |
23100 KB |
Output is correct |
77 |
Correct |
43 ms |
24520 KB |
Output is correct |
78 |
Correct |
38 ms |
25800 KB |
Output is correct |
79 |
Correct |
40 ms |
27176 KB |
Output is correct |
80 |
Correct |
43 ms |
28528 KB |
Output is correct |
81 |
Correct |
44 ms |
30004 KB |
Output is correct |
82 |
Correct |
38 ms |
31304 KB |
Output is correct |
83 |
Correct |
45 ms |
32952 KB |
Output is correct |
84 |
Correct |
43 ms |
34960 KB |
Output is correct |
85 |
Correct |
44 ms |
36884 KB |
Output is correct |
86 |
Correct |
42 ms |
38828 KB |
Output is correct |
87 |
Correct |
42 ms |
40768 KB |
Output is correct |
88 |
Correct |
48 ms |
42700 KB |
Output is correct |
89 |
Correct |
46 ms |
44628 KB |
Output is correct |
90 |
Correct |
47 ms |
46580 KB |
Output is correct |
91 |
Correct |
67 ms |
48412 KB |
Output is correct |
92 |
Correct |
48 ms |
50440 KB |
Output is correct |
93 |
Correct |
43 ms |
52376 KB |
Output is correct |
94 |
Correct |
45 ms |
54332 KB |
Output is correct |
95 |
Correct |
44 ms |
56264 KB |
Output is correct |
96 |
Correct |
42 ms |
58192 KB |
Output is correct |
97 |
Correct |
43 ms |
60036 KB |
Output is correct |
98 |
Correct |
42 ms |
62064 KB |
Output is correct |
99 |
Correct |
43 ms |
64020 KB |
Output is correct |
100 |
Correct |
45 ms |
65952 KB |
Output is correct |
101 |
Correct |
58 ms |
67880 KB |
Output is correct |
102 |
Correct |
44 ms |
69816 KB |
Output is correct |