Untitled

 avatar
user_2119273
plain_text
2 years ago
892 B
29
Indexable
public class Solution {
    public int solve(ArrayList<Integer> A) {
        int n = A.size();
        Collections.sort(A);
        int modulo = 1000000007;
        long power = n-1;
        long base = 2;
        long minpower = 1;
        long maxPower = 1;
        // Fast power
        while(power > 0) {
            if(power % 2 != 0) {
                maxPower = (maxPower * base) % modulo;
            }
            base = (base * base) % modulo ;
            power = power / 2;
        } 
        // 306568771
        long ans = 0;
        
        for(int i = 0 ; i < n ; i++) {
            long sub = (minpower - maxPower + modulo) % modulo ;
            long curr_ans = (A.get(i) * sub) % modulo;
            ans = (ans +  curr_ans) % modulo;
            minpower = (minpower * 2) % modulo;
            maxPower = maxPower / 2;
        }
        return (int)ans % modulo;
    }
 }
Editor is loading...