-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathdiff_Main.cpp
More file actions
59 lines (56 loc) · 1.44 KB
/
Copy pathdiff_Main.cpp
File metadata and controls
59 lines (56 loc) · 1.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
diff --git a/CodeJam/Main.cpp b/examples/2022/Round1B/B/Main.cpp
index 2150379..c863fc0 100644
--- a/CodeJam/Main.cpp
+++ b/examples/2022/Round1B/B/Main.cpp
@@ -1570,11 +1570,54 @@ void init(){
cin >> T;
}
+ll N, P;
+v(v(ll)) Xij;
+v(p(ll, ll)) Xminmax;
+
void readInput(){
+ cin >> N >> P;
+ Xij.cl;
+ Xij.resize(N+1, v(ll)(P));
+ Xminmax.resize(N+1);
+ forn(j, P)
+ Xij[0][j] = 0;
+ fornn(i, 1, N+1)
+ forn(j, P)
+ cin >> Xij[i][j];
+ forn(i, N+1){
+ ll mini = Xij[i][0];
+ ll maxi = Xij[i][0];
+ forn(j, P){
+ mini = min(mini, Xij[i][j]);
+ maxi = max(maxi, Xij[i][j]);
+ }
+ Xminmax[i] = mp(mini, maxi);
+ }
}
// write to COMM_TYPE result
void calcFunction() {
+ result = 0;
+
+ v(ll) lastMinPresses(P, 0);
+
+ fornn(i, 1, N+1){
+ v(ll) curMinPresses(P, INF);
+ forn(j, P){
+ forn(k, P){
+ ll startX = Xij[i-1][j];
+ ll endX = Xij[i][k];
+ ll mini = min(Xminmax[i].st, startX);
+ ll maxi = max(Xminmax[i].nd, startX);
+ ll minPresses = 2*(maxi-mini) - abs(startX-endX);
+ curMinPresses[k] = min(curMinPresses[k], lastMinPresses[j] + minPresses);
+ }
+ }
+ lg(curMinPresses);
+ lastMinPresses = curMinPresses;
+ }
+
+ result = *min_element(all(lastMinPresses));
}
} // namespace task