ans

liujunhao 2023-11-28 18:12:04 2023-11-28 18:12:35 9 返回题目

#include<bits/stdc++.h>

using namespace std;

struct Assignment {

int deadline, credit;

};

bool compare(const Assignment &a, const Assignment &b) {

return a.deadline < b.deadline;

}

int main() {

int n;

cin >> n;

vector<Assignment> assignments(n);

for(int i = 0; i < n; i++) {
	
    cin >> assignments[i].deadline >> assignments[i].credit;
    
}

// 按截止日期升序排序
sort(assignments.begin(), assignments.end(), compare);

priority_queue<int, vector<int>, greater<int> > pq;

for (int i = 0; i < n; i++) {
	
    pq.push(assignments[i].credit);
    
    if (pq.size() > assignments[i].deadline) {
    	
        pq.pop(); // 移除学分最低的作业
        
    }
    
}

int totalCredit = 0;

while (!pq.empty()) {
	
    totalCredit += pq.top();
    
    pq.pop();
    
}

cout << totalCredit << endl;

return 0;

}

{{ vote && vote.total.up }}