#include <bits/stdc++.h>
using namespace std;
long long getLastIndex(vector<long long> &price, long long target){
int n = price.size();
long long low = 0, high = n - 1;
long long ans = -1;
while(low <= high){
long long mid = (low + high) / 2;
if(price[mid] <= target){
ans = mid;
low = mid + 1;
}
else{
high = mid - 1;
}
}
return ans;
}
int main() {
long long n, q, target;
cin >> n >> q >> target;
vector<long long> queries;
vector<long long> price;
long long totalSum = 0;
for(long long i = 0; i < n; i++){
long long element;
cin >> element;
price.push_back(element);
totalSum += element;
}
for(long long i = 0; i < q; i++){
long long query;
cin >> query;
queries.push_back(query);
}
vector<long long> prefixSum(n + 1, 0);
sort(price.begin(), price.end());
for(long long i = 0; i < n; i++)
prefixSum[i + 1] = prefixSum[i] + price[i];
for(long long i = 0; i < q; i++){
long long currentTarget = queries[i];
long long largestIndexLessThanTarget = getLastIndex(price, currentTarget);
long long leftPartSum = 0;
long long rightPartSum = 0;
if(largestIndexLessThanTarget >= 0)
leftPartSum = currentTarget * (largestIndexLessThanTarget + 1) - prefixSum[largestIndexLessThanTarget + 1];
else
leftPartSum = 0;
if(largestIndexLessThanTarget < n - 1)
rightPartSum = totalSum - prefixSum[largestIndexLessThanTarget + 1] - currentTarget * (n - 1 - largestIndexLessThanTarget);
else
rightPartSum = 0;
long long answer = leftPartSum + rightPartSum;
cout << answer<<"\n";
}
return 0;
}
I2luY2x1ZGUgPGJpdHMvc3RkYysrLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgoKbG9uZyBsb25nIGdldExhc3RJbmRleCh2ZWN0b3I8bG9uZyBsb25nPiAmcHJpY2UsIGxvbmcgbG9uZyB0YXJnZXQpewoJaW50IG4gPSBwcmljZS5zaXplKCk7Cglsb25nIGxvbmcgbG93ID0gMCwgaGlnaCA9IG4gLSAxOwoJbG9uZyBsb25nIGFucyA9IC0xOwoJd2hpbGUobG93IDw9IGhpZ2gpewoJCWxvbmcgbG9uZyBtaWQgPSAobG93ICsgaGlnaCkgLyAyOwoJCWlmKHByaWNlW21pZF0gPD0gdGFyZ2V0KXsgCgkJCWFucyA9IG1pZDsgICAgICAgICAgIAoJCQlsb3cgPSBtaWQgKyAxOyAgICAgICAKCQl9CgkJZWxzZXsKCQkJaGlnaCA9IG1pZCAtIDE7CgkJfQoJfQoJcmV0dXJuIGFuczsKfQoKaW50IG1haW4oKSB7Cglsb25nIGxvbmcgbiwgcSwgdGFyZ2V0OwoJY2luID4+IG4gPj4gcSA+PiB0YXJnZXQ7IAoJdmVjdG9yPGxvbmcgbG9uZz4gcXVlcmllczsKCXZlY3Rvcjxsb25nIGxvbmc+IHByaWNlOwoJbG9uZyBsb25nIHRvdGFsU3VtID0gMDsKCQoJZm9yKGxvbmcgbG9uZyBpID0gMDsgaSA8IG47IGkrKyl7CgkJbG9uZyBsb25nIGVsZW1lbnQ7CgkJY2luID4+IGVsZW1lbnQ7CgkJcHJpY2UucHVzaF9iYWNrKGVsZW1lbnQpOwoJCXRvdGFsU3VtICs9IGVsZW1lbnQ7Cgl9Cglmb3IobG9uZyBsb25nIGkgPSAwOyBpIDwgcTsgaSsrKXsKCQlsb25nIGxvbmcgcXVlcnk7CgkJY2luID4+IHF1ZXJ5OwoJCXF1ZXJpZXMucHVzaF9iYWNrKHF1ZXJ5KTsKCX0KCQoJdmVjdG9yPGxvbmcgbG9uZz4gcHJlZml4U3VtKG4gKyAxLCAwKTsKCXNvcnQocHJpY2UuYmVnaW4oKSwgcHJpY2UuZW5kKCkpOwoJCglmb3IobG9uZyBsb25nIGkgPSAwOyBpIDwgbjsgaSsrKQoJCXByZWZpeFN1bVtpICsgMV0gPSBwcmVmaXhTdW1baV0gKyBwcmljZVtpXTsKCQkKCWZvcihsb25nIGxvbmcgaSA9IDA7IGkgPCBxOyBpKyspewoJCWxvbmcgbG9uZyBjdXJyZW50VGFyZ2V0ID0gcXVlcmllc1tpXTsKCQlsb25nIGxvbmcgbGFyZ2VzdEluZGV4TGVzc1RoYW5UYXJnZXQgPSBnZXRMYXN0SW5kZXgocHJpY2UsIGN1cnJlbnRUYXJnZXQpOwoJCQoJCWxvbmcgbG9uZyBsZWZ0UGFydFN1bSA9IDA7CgkJbG9uZyBsb25nIHJpZ2h0UGFydFN1bSA9IDA7CgkJCgkJaWYobGFyZ2VzdEluZGV4TGVzc1RoYW5UYXJnZXQgPj0gMCkKCQkJbGVmdFBhcnRTdW0gPSBjdXJyZW50VGFyZ2V0ICogKGxhcmdlc3RJbmRleExlc3NUaGFuVGFyZ2V0ICsgMSkgLSBwcmVmaXhTdW1bbGFyZ2VzdEluZGV4TGVzc1RoYW5UYXJnZXQgKyAxXTsKCQllbHNlCgkJCWxlZnRQYXJ0U3VtID0gMDsKCQkJCgkJaWYobGFyZ2VzdEluZGV4TGVzc1RoYW5UYXJnZXQgPCBuIC0gMSkKCQkJcmlnaHRQYXJ0U3VtID0gdG90YWxTdW0gLSBwcmVmaXhTdW1bbGFyZ2VzdEluZGV4TGVzc1RoYW5UYXJnZXQgKyAxXSAtIGN1cnJlbnRUYXJnZXQgKiAobiAtIDEgLSBsYXJnZXN0SW5kZXhMZXNzVGhhblRhcmdldCk7CgkJZWxzZQoJCQlyaWdodFBhcnRTdW0gPSAwOwoJCQkKCQlsb25nIGxvbmcgYW5zd2VyID0gbGVmdFBhcnRTdW0gKyByaWdodFBhcnRTdW07CgkJY291dCA8PCBhbnN3ZXI8PCJcbiI7Cgl9CglyZXR1cm4gMDsKfQ==