Description
 
 
Submission
class Solution {
public:
    vector<int> kWeakestRows(vector<vector<int>>& mat, int k) {
        int n = mat.size();
        for(int i = 0; i < n; ++i) {
            mat[i].push_back(i);
        }
        sort(mat.begin(), mat.end(), [](vector<int>& r1, vector<int>& r2) {
            int cnt1 = upper_bound(r1.begin(), r1.end() - 1, 1, greater<int>()) - r1.begin();
            int cnt2 = upper_bound(r2.begin(), r2.end() - 1, 1, greater<int>()) - r2.begin();
            if(cnt1 == cnt2) return r1.back() < r2.back();
            return cnt1 < cnt2;
        });
        vector<int> rets;
        for(int i = 0; i < k; ++i) {
            rets.push_back(mat[i].back());
        }
        return rets;
    }
};
 
class Solution {
public:
    vector<int> kWeakestRows(vector<vector<int>>& mat, int k) {
        int n = mat.size();
        vector<pair<int,int>> sums(n);
        for(int i = 0; i < mat.size(); ++i) {
            sums[i] = {accumulate(mat[i].begin(), mat[i].end(), 0), i};
        }
        sort(sums.begin(), sums.end());
        vector<int> rets;
        for(int i = 0; i < k; ++i) {
            rets.push_back(sums[i].second);
        }
        return rets;
    }
};
