diff --git a/POJ/1456/1456.cpp b/POJ/1456/1456.cpp new file mode 100644 index 00000000..6edef1cb --- /dev/null +++ b/POJ/1456/1456.cpp @@ -0,0 +1,40 @@ +#include +#include +#include + +using namespace std; + +struct node { + int expire, value; + + const bool operator<(const node& b) const { + return expire > b.expire; + } +} a[10005]; + +int main() { + int n; + while (cin >> n) { + int d = 1, ans = 0; + priority_queue q; + for (int i = 0; i < n; i++) { + cin >> a[i].value >> a[i].expire; + } + sort(a, a + n); + a[n].value = a[n].expire = 0; + for (int i = 0; i < n;) { + int last = a[i].expire; + while (a[i].expire == last) { + q.push(a[i++].value); + } + int lim = last - a[i].expire; + while (q.size() && lim) { + ans += q.top(); + q.pop(); + lim--; + } + } + cout << ans << endl; + } + return 0; +}