Hello,
  i found this question online and its solution too....But i am not able to
fully understand the solution.Need your help to proof correctness of the
algo.

Question is as follows :-

*Question:*

*Given an array A and a number S', provide an efficient algorithm (nlogn)
to find a number K such that if all elements in A greater than K are
changed to K, the sum of all elements in the resulting array will be S'.*

*Example, given A: [90,30,100,40,20] and S' = 210, K will be 60.*

*Ans)*

#!/usr/bin/env python



A = [90, 30, 100, 40, 20]

S = 210

K = 60



A    = sorted(A)

prev = 0

sum  = 0



for index, value in enumerate(A):

    # What do we need to set all subsequent values to to get the desired sum?

    solution = (S - sum) / (len(A) - index)



    # That answer can't be too big or too small.

    if prev < solution <= value:

        print solution



    sum += value

    prev = value

-- 
You received this message because you are subscribed to the Google Groups 
"Algorithm Geeks" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to algogeeks+unsubscr...@googlegroups.com.

Reply via email to