2931. 购买物品的最大开销

81 阅读1分钟
class Solution {
public:
    long long maxSpending(vector<vector<int>>& values) {
        long long ans=0;
        int m=values.size();
        int n=values[0].size();

        auto cmp=[](const pair<int,pair<int,int>>&a,const pair<int,pair<int,int>>&b){
            return a.first>b.first;
        };

        priority_queue<pair<int,pair<int,int>>,vector<pair<int,pair<int,int>>>,decltype(cmp)>pq(cmp);
        for(int i=0;i<m;i++){
            
            pq.push({values[i][n-1],{i,n-1}});
        }
        int cnt=1;
        while(!pq.empty()){
            
            auto x=pq.top();
            pq.pop();
            ans+=(long long)cnt*(x.first);
            cnt++;
            if(x.second.second==0)continue;
            pq.push({values[x.second.first][x.second.second-1],{x.second.first,x.second.second-1}});
        }
        return ans;
    }
};