Advertisement
Guest User

Untitled

a guest
Dec 14th, 2019
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.37 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. #define sc second
  4. #define f first
  5. #define ll long long
  6. #define p pair <ll, ll>
  7.  
  8. using namespace std;
  9.  
  10. int main() {
  11.     ios_base::sync_with_stdio(0);
  12.     cin.tie(0); cout.tie(0);
  13.     int n, m;
  14.     cin >> n;
  15.     vector <int> a(n);
  16.     for (int i = 0; i < n; i++) cin >> a[i];
  17.     cin >> m;
  18.     vector <int> b(m), c(m);
  19.     for (int i = 0; i < m; i++) cin >> b[i] >> c[i];
  20.     int count = 1e4;
  21.     vector <vector <p>> dp(n + 1, vector <p> ( m + 1));
  22.     dp[0][0] = {count, 0};
  23.     for (int i = 1; i < n + 1; i++) dp[i][0] = {dp[i - 1][0].f + a[i - 1], 0};
  24.     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]};
  25.     for (int i = 1; i < n + 1; i++) {
  26.         for (int j = 1; j < m + 1; j++)
  27.             dp[i][j] = {dp[i][j - 1].f - b[j - 1], dp[i][j - 1].sc + dp[i][j - 1].f * c[j - 1]};
  28.     }
  29.  
  30.     for (int i = 0; i <= n; i++) {
  31.         for (int j = 0; j <= m; j++) cout << dp[i][j].f << " " << dp[i][j].sc << "   ";
  32.         cout << '\n';
  33.     }
  34.  
  35.     int q;
  36.     cin >> q;
  37.     for (int i = 0; i < q; i++) {
  38.         int d;
  39.         cin >> d;
  40.         ll ans = 0;
  41.         for (int j = 0; j <= n; j++) {
  42.             if (d - j >= 0 && d - j <= m) ans = max(ans, dp[j][d - j].sc);
  43.         }
  44.         cout << ans << '\n';
  45.     }
  46.     return 0;
  47. }
  48. /*
  49.  *
  50. 1
  51. 10
  52. 2
  53. 10 20
  54. 20 10
  55. 4
  56. 0
  57. 1
  58. 2
  59. 3
  60.  */
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement