#include <iostream>
#define INF (long long)(1e18)
using namespace std;
const int N = 10005;
int p[N], c[N], e[N];
long long dp[N]; // dp[i]: min price for packing i manjus
int main() {
int m, n; cin >> m >> n;
for (int i = 0; i < m; i++) cin >> p[i];
for (int i = 0; i < n; i++) cin >> c[i] >> e[i];
// processing dp
for (int i = 1; i <= 10001; i++) dp[i] = INF;
for (int i = 0; i < n; i++) {
for (int j = 10000; j >= 0; j--) {
dp[j] = min(dp[j], dp[j+1]);
if (j >= c[i]) dp[j] = min(dp[j], dp[j-c[i]] + e[i]);
}
}
// processing manju
sort(p, p + m, [](int a, int b) { return a > b; });
for (int i = 1; i < m; i++) p[i] += p[i-1];
long long ans = 0;
for (int i = 1; i <= m; i++) ans = max(ans, p[i-1] - dp[i]);
cout << ans << endl;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |