Skip to content

Commit bdb9097

Browse files
Create Insert a Progression.cpp
1 parent 1510a0e commit bdb9097

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
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+

0 commit comments

Comments
 (0)