using
System;
public
class
GFG {
static
int
Rotate(
int
n,
int
f)
{
int
temp = n;
int
maxi = n;
int
mini = n;
for
(
int
idx = 0; idx < 7; idx++) {
if
(temp %2 == 1) {
temp >>= 1;
temp += (
int
)Math.Pow(2, 7);
}
else
temp >>= 1;
mini = Math.Min(mini, temp);
maxi = Math.Max(maxi, temp);
}
if
(f==1)
return
(maxi);
else
return
(mini);
}
static
int
calcMinDiff(
int
[] arr,
int
n)
{
int
caseOne = 0;
int
sumOfodd = 0;
int
sumOfeven = 0;
for
(
int
i = 0; i < n; i++) {
if
(i % 2==0)
sumOfodd += Rotate(arr[i], 0);
else
sumOfeven += Rotate(arr[i], 1);
}
caseOne = Math.Abs(sumOfodd - sumOfeven);
int
caseTwo = 0;
sumOfodd = 0;
sumOfeven = 0;
for
(
int
i = 0; i < n; i++)
{
if
(i % 2==0)
sumOfodd += Rotate(arr[i], 1);
else
sumOfeven += Rotate(arr[i], 0);
}
caseTwo = Math.Abs(sumOfodd - sumOfeven);
return
Math.Max(caseOne, caseTwo);
}
public
static
void
Main(
string
[] args)
{
int
[] arr = { 123, 86, 234, 189 };
int
n = arr.Length;
Console.WriteLine((calcMinDiff(arr, n)));
}
}