# ZeroJudge - f448: 1316 - Supermarket ### 題目連結:https://zerojudge.tw/ShowProblem?problemid=f448 ###### tags: `ZeroJudge` `貪心演算法(Greedy Algorithm)` `優先佇列(Priority Queue)` ```cpp= #include <iostream> #include <queue> #include <algorithm> using namespace std; struct product { int profit, deadline; bool operator<(const product &other) { return this->deadline > other.deadline; } } products[10000]; int main() { cin.sync_with_stdio(false); cin.tie(nullptr); int amount, maximumDeadline, nowProduct, profitSums; while (cin >> amount) { maximumDeadline = nowProduct = profitSums = 0; for (int i = 0; i < amount; ++i) { cin >> products[i].profit >> products[i].deadline; maximumDeadline = max(maximumDeadline, products[i].deadline); } sort(products, products + amount); priority_queue <int> PQ; for (int i = maximumDeadline; i; --i) { while (nowProduct < amount && products[nowProduct].deadline >= i) PQ.push(products[nowProduct].profit), ++nowProduct; if (!PQ.empty()) profitSums += PQ.top(), PQ.pop(); } cout << profitSums << '\n'; } } ```