File tree 1 file changed +65
-0
lines changed
2022/Contests/Educational Rounds/Educational Round 127/Programs
1 file changed +65
-0
lines changed Original file line number Diff line number Diff line change
1
+ #include < iostream>
2
+ #include < vector>
3
+ #include < algorithm>
4
+
5
+ using namespace std ;
6
+
7
+ void solve ()
8
+ {
9
+ int no_of_elements, extra;
10
+ cin >> no_of_elements >> extra;
11
+
12
+ vector <long long > A (no_of_elements + 1 );
13
+ for (int i = 1 ; i <= no_of_elements; i++)
14
+ {
15
+ cin >> A[i];
16
+ }
17
+
18
+ long long value = 0 ;
19
+ long long minimum = A[1 ], maximum = A[1 ];
20
+ for (int i = 2 ; i <= no_of_elements; i++)
21
+ {
22
+ minimum = min (minimum, A[i]);
23
+ maximum = max (maximum, A[i]);
24
+
25
+ value += abs (A[i] - A[i - 1 ]);
26
+ }
27
+
28
+ if (minimum > 1 )
29
+ {
30
+ long long minimum_contribution = min (A[1 ] - 1 , A[no_of_elements] - 1 );
31
+
32
+ for (int i = 2 ; i <= no_of_elements; i++)
33
+ {
34
+ minimum_contribution = min (minimum_contribution, (A[i] - 1 )*2 );
35
+ }
36
+
37
+ value += minimum_contribution;
38
+ }
39
+
40
+ if (maximum < extra)
41
+ {
42
+ long long maximum_contribution = min (extra - A[1 ], extra - A[no_of_elements]);
43
+
44
+ for (int i = 2 ; i <= no_of_elements; i++)
45
+ {
46
+ maximum_contribution = min (maximum_contribution, (extra - A[i])*2 );
47
+ }
48
+
49
+ value += maximum_contribution;
50
+ }
51
+
52
+ cout << value << " \n " ;
53
+ }
54
+
55
+ int main ()
56
+ {
57
+ int no_of_test_cases;
58
+ cin >> no_of_test_cases;
59
+
60
+ while (no_of_test_cases--)
61
+ solve ();
62
+
63
+ return 0 ;
64
+ }
65
+
You can’t perform that action at this time.
0 commit comments