Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #define sc second
- #define f first
- #define ll long long
- #define p pair <ll, ll>
- using namespace std;
- int main() {
- ios_base::sync_with_stdio(0);
- cin.tie(0); cout.tie(0);
- int n, m;
- cin >> n;
- vector <int> a(n);
- for (int i = 0; i < n; i++) cin >> a[i];
- cin >> m;
- vector <int> b(m), c(m);
- for (int i = 0; i < m; i++) cin >> b[i] >> c[i];
- int count = 1e4;
- vector <vector <p>> dp(n + 1, vector <p> ( m + 1));
- dp[0][0] = {count, 0};
- for (int i = 1; i < n + 1; i++) dp[i][0] = {dp[i - 1][0].f + a[i - 1], 0};
- for (int i = 1; i < m + 1; i++) dp[0][i] = {dp[0][i - 1].f - b[i - 1], dp[0][i - 1].f * c[i - 1]};
- for (int i = 1; i < n + 1; i++) {
- for (int j = 1; j < m + 1; j++)
- dp[i][j] = {dp[i][j - 1].f - b[j - 1], dp[i][j - 1].sc + dp[i][j - 1].f * c[j - 1]};
- }
- for (int i = 0; i <= n; i++) {
- for (int j = 0; j <= m; j++) cout << dp[i][j].f << " " << dp[i][j].sc << " ";
- cout << '\n';
- }
- int q;
- cin >> q;
- for (int i = 0; i < q; i++) {
- int d;
- cin >> d;
- ll ans = 0;
- for (int j = 0; j <= n; j++) {
- if (d - j >= 0 && d - j <= m) ans = max(ans, dp[j][d - j].sc);
- }
- cout << ans << '\n';
- }
- return 0;
- }
- /*
- *
- 1
- 10
- 2
- 10 20
- 20 10
- 4
- 0
- 1
- 2
- 3
- */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement