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); 5 6 const auto mark = [&](int idx) { 7 if (nums[idx] < 0) return false; 8 sum += nums[idx] = -nums[idx]; 9 return true; 10 }; 11 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)); 16 17 int crnt = 0; 18 vector<long long> res(m); 19 for (int i = 0; i < m; i++) { 20 mark(queries[i][0]); 21 22 int k = queries[i][1]; 23 while (crnt < n && k > 0) { 24 k -= mark(pairs[crnt++].second); 25 } 26 27 res[i] = sum; 28 } 29 30 return res; 31 } 32 };