# |
Submission time |
Handle |
Problem |
Language |
Result |
Execution time |
Memory |
885991 |
2023-12-11T10:00:08 Z |
waldi |
Wiring (IOI17_wiring) |
C++17 |
|
41 ms |
15304 KB |
#include "wiring.h"
#include <bits/stdc++.h>
#define FOR(i,p,k) for(int i=(p);i<=(k);++i)
#define REP(i,n) FOR(i,0,(n)-1)
#define ssize(x) (int((x).size()))
#define all(x) (x).begin(),(x).end()
#define inf 1000000000000000000ll
#define fi first
#define se second
using namespace std;
typedef long long ll;
typedef pair<ll, bool> plb;
vector<ll> pom(vector<ll> popdp, vector<ll> poppoz, vector<ll> terpoz){
//~ printf("poppoz: ");
//~ for(ll x : poppoz) printf("%lld ", x);
//~ printf("\n");
//~ printf("popdp: ");
//~ for(ll x : popdp) printf("%lld ", x);
//~ printf("\n");
//~ printf("terpoz: ");
//~ for(ll x : terpoz) printf("%lld ", x);
//~ printf("\n");
int n = ssize(poppoz);
int m = ssize(terpoz);
ll dodaj = 0ll;
for(int i = n-1; ~--i;){
dodaj += poppoz[n-1]-poppoz[i];
popdp[i] += dodaj;
}
ll delta = terpoz[0]-poppoz[n-1];
vector<ll> mini_pref(n);
REP(i, n){
mini_pref[i] = popdp[i] + delta*(n-i);
if(i) mini_pref[i] = min(mini_pref[i], mini_pref[i-1]);
}
vector<ll> mini_suff(n);
for(int i = n; ~--i;){
mini_suff[i] = popdp[i];
if(i+1 < n) mini_suff[i] = min(mini_suff[i], mini_suff[i+1]);
}
vector<ll> dp(m+1);
dp[0] = popdp[n];
FOR(i, 1, m){
dp[i] = inf;
if(n-i > 0) dp[i] = min(dp[i], mini_pref[n-i-1]);
dp[i] = min(dp[i], mini_suff[max(0, n-i)] + delta*i);
dp[i] = min(dp[i], popdp[n] + delta*i);
}
dodaj = 0ll;
FOR(i, 2, m){
dodaj += terpoz[i-1]-terpoz[0];
dp[i] += dodaj;
}
//~ printf("dp: ");
//~ for(ll x : dp) printf("%lld ", x);
//~ printf("\n");
//~ printf("\n");
return dp;
}
ll min_total_length(vector<int> r, vector<int> b){
vector<plb> vec;
for(int x : r) vec.emplace_back(x, 0);
for(int x : b) vec.emplace_back(x, 1);
sort(all(vec));
vector<ll> dp, poppoz, terpoz;
REP(i, ssize(vec)){
terpoz.emplace_back(vec[i].fi);
if(i+1 == ssize(vec) || vec[i+1].se != vec[i].se){
if(dp.empty()) dp.resize(ssize(terpoz)+1, inf), dp[0] = 0ll;
else dp = pom(dp, poppoz, terpoz);
poppoz = terpoz, terpoz.clear();
}
}
return dp.back();
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
0 ms |
348 KB |
Output is correct |
5 |
Correct |
0 ms |
348 KB |
Output is correct |
6 |
Correct |
0 ms |
500 KB |
Output is correct |
7 |
Correct |
0 ms |
348 KB |
Output is correct |
8 |
Correct |
0 ms |
344 KB |
Output is correct |
9 |
Correct |
0 ms |
348 KB |
Output is correct |
10 |
Correct |
0 ms |
348 KB |
Output is correct |
11 |
Correct |
0 ms |
348 KB |
Output is correct |
12 |
Correct |
0 ms |
348 KB |
Output is correct |
13 |
Correct |
0 ms |
344 KB |
Output is correct |
14 |
Correct |
0 ms |
348 KB |
Output is correct |
15 |
Correct |
0 ms |
344 KB |
Output is correct |
16 |
Correct |
0 ms |
348 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
27 ms |
11076 KB |
Output is correct |
4 |
Correct |
21 ms |
11712 KB |
Output is correct |
5 |
Correct |
20 ms |
11456 KB |
Output is correct |
6 |
Correct |
31 ms |
14232 KB |
Output is correct |
7 |
Correct |
26 ms |
14360 KB |
Output is correct |
8 |
Correct |
26 ms |
14564 KB |
Output is correct |
9 |
Correct |
26 ms |
15304 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
41 ms |
7992 KB |
Output is correct |
4 |
Correct |
38 ms |
7232 KB |
Output is correct |
5 |
Correct |
1 ms |
348 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
0 ms |
348 KB |
Output is correct |
8 |
Correct |
0 ms |
348 KB |
Output is correct |
9 |
Correct |
0 ms |
348 KB |
Output is correct |
10 |
Correct |
0 ms |
348 KB |
Output is correct |
11 |
Correct |
0 ms |
348 KB |
Output is correct |
12 |
Correct |
0 ms |
348 KB |
Output is correct |
13 |
Correct |
0 ms |
348 KB |
Output is correct |
14 |
Correct |
0 ms |
348 KB |
Output is correct |
15 |
Correct |
0 ms |
348 KB |
Output is correct |
16 |
Correct |
0 ms |
348 KB |
Output is correct |
17 |
Correct |
0 ms |
348 KB |
Output is correct |
18 |
Correct |
41 ms |
7620 KB |
Output is correct |
19 |
Correct |
40 ms |
7624 KB |
Output is correct |
20 |
Correct |
40 ms |
7880 KB |
Output is correct |
21 |
Correct |
39 ms |
6348 KB |
Output is correct |
22 |
Correct |
40 ms |
6604 KB |
Output is correct |
23 |
Correct |
40 ms |
7872 KB |
Output is correct |
24 |
Correct |
40 ms |
7116 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
344 KB |
Output is correct |
2 |
Correct |
31 ms |
7628 KB |
Output is correct |
3 |
Correct |
35 ms |
9160 KB |
Output is correct |
4 |
Correct |
35 ms |
7584 KB |
Output is correct |
5 |
Correct |
35 ms |
8896 KB |
Output is correct |
6 |
Correct |
0 ms |
348 KB |
Output is correct |
7 |
Correct |
0 ms |
348 KB |
Output is correct |
8 |
Correct |
0 ms |
348 KB |
Output is correct |
9 |
Correct |
0 ms |
344 KB |
Output is correct |
10 |
Correct |
0 ms |
348 KB |
Output is correct |
11 |
Correct |
0 ms |
348 KB |
Output is correct |
12 |
Correct |
0 ms |
348 KB |
Output is correct |
13 |
Correct |
0 ms |
348 KB |
Output is correct |
14 |
Correct |
0 ms |
348 KB |
Output is correct |
15 |
Correct |
0 ms |
348 KB |
Output is correct |
16 |
Correct |
0 ms |
348 KB |
Output is correct |
17 |
Correct |
0 ms |
348 KB |
Output is correct |
18 |
Correct |
31 ms |
9360 KB |
Output is correct |
19 |
Correct |
33 ms |
9164 KB |
Output is correct |
20 |
Correct |
30 ms |
9420 KB |
Output is correct |
21 |
Correct |
29 ms |
7628 KB |
Output is correct |
22 |
Correct |
38 ms |
12948 KB |
Output is correct |
23 |
Correct |
27 ms |
12488 KB |
Output is correct |
24 |
Correct |
36 ms |
11712 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
0 ms |
348 KB |
Output is correct |
2 |
Correct |
0 ms |
348 KB |
Output is correct |
3 |
Correct |
0 ms |
348 KB |
Output is correct |
4 |
Correct |
0 ms |
348 KB |
Output is correct |
5 |
Correct |
0 ms |
348 KB |
Output is correct |
6 |
Correct |
0 ms |
500 KB |
Output is correct |
7 |
Correct |
0 ms |
348 KB |
Output is correct |
8 |
Correct |
0 ms |
344 KB |
Output is correct |
9 |
Correct |
0 ms |
348 KB |
Output is correct |
10 |
Correct |
0 ms |
348 KB |
Output is correct |
11 |
Correct |
0 ms |
348 KB |
Output is correct |
12 |
Correct |
0 ms |
348 KB |
Output is correct |
13 |
Correct |
0 ms |
344 KB |
Output is correct |
14 |
Correct |
0 ms |
348 KB |
Output is correct |
15 |
Correct |
0 ms |
344 KB |
Output is correct |
16 |
Correct |
0 ms |
348 KB |
Output is correct |
17 |
Correct |
1 ms |
348 KB |
Output is correct |
18 |
Correct |
0 ms |
348 KB |
Output is correct |
19 |
Correct |
27 ms |
11076 KB |
Output is correct |
20 |
Correct |
21 ms |
11712 KB |
Output is correct |
21 |
Correct |
20 ms |
11456 KB |
Output is correct |
22 |
Correct |
31 ms |
14232 KB |
Output is correct |
23 |
Correct |
26 ms |
14360 KB |
Output is correct |
24 |
Correct |
26 ms |
14564 KB |
Output is correct |
25 |
Correct |
26 ms |
15304 KB |
Output is correct |
26 |
Correct |
0 ms |
344 KB |
Output is correct |
27 |
Correct |
0 ms |
348 KB |
Output is correct |
28 |
Correct |
41 ms |
7992 KB |
Output is correct |
29 |
Correct |
38 ms |
7232 KB |
Output is correct |
30 |
Correct |
1 ms |
348 KB |
Output is correct |
31 |
Correct |
0 ms |
348 KB |
Output is correct |
32 |
Correct |
0 ms |
348 KB |
Output is correct |
33 |
Correct |
0 ms |
348 KB |
Output is correct |
34 |
Correct |
0 ms |
348 KB |
Output is correct |
35 |
Correct |
0 ms |
348 KB |
Output is correct |
36 |
Correct |
0 ms |
348 KB |
Output is correct |
37 |
Correct |
0 ms |
348 KB |
Output is correct |
38 |
Correct |
0 ms |
348 KB |
Output is correct |
39 |
Correct |
0 ms |
348 KB |
Output is correct |
40 |
Correct |
0 ms |
348 KB |
Output is correct |
41 |
Correct |
0 ms |
348 KB |
Output is correct |
42 |
Correct |
0 ms |
348 KB |
Output is correct |
43 |
Correct |
41 ms |
7620 KB |
Output is correct |
44 |
Correct |
40 ms |
7624 KB |
Output is correct |
45 |
Correct |
40 ms |
7880 KB |
Output is correct |
46 |
Correct |
39 ms |
6348 KB |
Output is correct |
47 |
Correct |
40 ms |
6604 KB |
Output is correct |
48 |
Correct |
40 ms |
7872 KB |
Output is correct |
49 |
Correct |
40 ms |
7116 KB |
Output is correct |
50 |
Correct |
0 ms |
344 KB |
Output is correct |
51 |
Correct |
31 ms |
7628 KB |
Output is correct |
52 |
Correct |
35 ms |
9160 KB |
Output is correct |
53 |
Correct |
35 ms |
7584 KB |
Output is correct |
54 |
Correct |
35 ms |
8896 KB |
Output is correct |
55 |
Correct |
0 ms |
348 KB |
Output is correct |
56 |
Correct |
0 ms |
348 KB |
Output is correct |
57 |
Correct |
0 ms |
348 KB |
Output is correct |
58 |
Correct |
0 ms |
344 KB |
Output is correct |
59 |
Correct |
0 ms |
348 KB |
Output is correct |
60 |
Correct |
0 ms |
348 KB |
Output is correct |
61 |
Correct |
0 ms |
348 KB |
Output is correct |
62 |
Correct |
0 ms |
348 KB |
Output is correct |
63 |
Correct |
0 ms |
348 KB |
Output is correct |
64 |
Correct |
0 ms |
348 KB |
Output is correct |
65 |
Correct |
0 ms |
348 KB |
Output is correct |
66 |
Correct |
0 ms |
348 KB |
Output is correct |
67 |
Correct |
31 ms |
9360 KB |
Output is correct |
68 |
Correct |
33 ms |
9164 KB |
Output is correct |
69 |
Correct |
30 ms |
9420 KB |
Output is correct |
70 |
Correct |
29 ms |
7628 KB |
Output is correct |
71 |
Correct |
38 ms |
12948 KB |
Output is correct |
72 |
Correct |
27 ms |
12488 KB |
Output is correct |
73 |
Correct |
36 ms |
11712 KB |
Output is correct |
74 |
Correct |
27 ms |
13248 KB |
Output is correct |
75 |
Correct |
34 ms |
9916 KB |
Output is correct |
76 |
Correct |
33 ms |
11200 KB |
Output is correct |
77 |
Correct |
32 ms |
10912 KB |
Output is correct |
78 |
Correct |
30 ms |
11200 KB |
Output is correct |
79 |
Correct |
33 ms |
11200 KB |
Output is correct |
80 |
Correct |
28 ms |
11708 KB |
Output is correct |
81 |
Correct |
31 ms |
12480 KB |
Output is correct |
82 |
Correct |
27 ms |
13000 KB |
Output is correct |
83 |
Correct |
33 ms |
11980 KB |
Output is correct |
84 |
Correct |
27 ms |
13248 KB |
Output is correct |
85 |
Correct |
38 ms |
10428 KB |
Output is correct |
86 |
Correct |
29 ms |
12076 KB |
Output is correct |
87 |
Correct |
30 ms |
11828 KB |
Output is correct |
88 |
Correct |
31 ms |
11424 KB |
Output is correct |
89 |
Correct |
29 ms |
11168 KB |
Output is correct |
90 |
Correct |
36 ms |
11196 KB |
Output is correct |
91 |
Correct |
29 ms |
12988 KB |
Output is correct |
92 |
Correct |
31 ms |
11436 KB |
Output is correct |
93 |
Correct |
29 ms |
12328 KB |
Output is correct |
94 |
Correct |
31 ms |
12476 KB |
Output is correct |
95 |
Correct |
33 ms |
11456 KB |
Output is correct |
96 |
Correct |
32 ms |
13512 KB |
Output is correct |
97 |
Correct |
29 ms |
13608 KB |
Output is correct |
98 |
Correct |
31 ms |
13472 KB |
Output is correct |
99 |
Correct |
31 ms |
13248 KB |
Output is correct |
100 |
Correct |
35 ms |
11812 KB |
Output is correct |
101 |
Correct |
31 ms |
13220 KB |
Output is correct |
102 |
Correct |
35 ms |
11416 KB |
Output is correct |