梦想,可以天花乱坠,理想,是我们一步一个脚印踩出来的坎坷道路。
——三毛
题目来自leetcode双周赛
class solution {
public:
long long clac(int& k, long long l, long long r) {
if (l > r)
return 0;
r = min(r, l + k - 1);
k -= (r - l + 1);
return 1LL * (l + r) * (r - l + 1) / 2;
}
long long minimalKSum(vector<int>& a, int k) {
int n = a.size();
sort(a.begin(), a.end());
long long ans = 0;
ans += calc(k, 1, a[0] - 1);
for (int i = 0; i < n - 1; i++)
ans += calc(k, a[i] + 1, a[i + 1] - 1);
ans += calc(k, a[n - 1] + 1, 2e9);
return ans;
}
};