
My C# Code:
using System;
using System.Collections.Generic;
namespace Minimum_Sum
{
class Program
{
static void Main(string[] args)
{
int[] nums = new int[] {10,20,7};
int k = 4;
int result = Process(nums, k);
Console.WriteLine("Result is: " + result.ToString());
}
private static int Process(int[] nums, int k)
{
if(nums.Length == 0)
{
return 0;
}
if(nums.Length == 1)
{
nums[0] = (int)Math.Ceiling((Decimal)nums[0] / 2);
}
Array.Reverse(nums);
int i = 0;
int firstMaxIndex = 0;
int secondMaxIndex = 1;
while (k > 0)
{
int tmp = (int)Math.Ceiling((Decimal)nums[i] / 2);
nums[i] = tmp;
if(nums.Length > 1 && nums[secondMaxIndex] > tmp)
{
int maxNo = nums[firstMaxIndex];
int j = secondMaxIndex;
for(; j<nums.Length; j++)
{
if(nums[j] > maxNo)
{
nums[j - 1] = nums[j];
}
else
{
break;
}
}
nums[j - 1] = maxNo;
}
k--;
}
int result = 0;
for (int j = 0; j < nums.Length; j++)
{
result += nums[j];
}
return result;
}
}
}