Untitled
user_2119273
plain_text
3 years ago
892 B
34
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...