1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| #include <bits/stdc++.h>
using namespace std;
const int LEN = 2e6 + 10;
struct Node { int p_, a_; } arr[LEN];
int main() { int n, m; cin >> n >> m; for (int i = 0; i < m; ++i) cin >> arr[i].p_ >> arr[i].a_; sort(arr, arr + m, [](Node &a, Node &b) -> bool { return a.p_ < b.p_; }); int ans = 0; for (int i = 0; i < m; ++i) { if (n >= arr[i].a_) { ans += arr[i].a_ * arr[i].p_; n -= arr[i].a_; } else { ans += n * arr[i].p_; break; } } cout << ans; return 0; }
|