leetcode

Solution to some Leetcode problems written in C++
git clone git://git.dimitrijedobrota.com/leetcode.git
Log | Files | Refs | README | LICENSE

3080.cpp (902B)


0 class Solution {
1 public:
2 vector<long long> unmarkedSumArray(vector<int> &nums, const vector<vector<int>> &queries) const {
3 const int n = size(nums), m = size(queries);
4 long long sum = accumulate(begin(nums), end(nums), 0ll);
6 const auto mark = [&](int idx) {
7 if (nums[idx] < 0) return false;
8 sum += nums[idx] = -nums[idx];
9 return true;
10 };
12 vector<pair<int, int>> pairs(n);
13 for (int i = 0; i < n; i++)
14 pairs[i] = {nums[i], i};
15 sort(begin(pairs), end(pairs));
17 int crnt = 0;
18 vector<long long> res(m);
19 for (int i = 0; i < m; i++) {
20 mark(queries[i][0]);
22 int k = queries[i][1];
23 while (crnt < n && k > 0) {
24 k -= mark(pairs[crnt++].second);
25 }
27 res[i] = sum;
28 }
30 return res;
31 }
32 };