Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- typedef long long ll;
- const int N = 155;
- const int INF = 2e9;
- int dp[N][N];
- int main()
- {
- ios::sync_with_stdio(false);
- cin.tie(0);
- freopen("bridge.in", "r", stdin);
- freopen("bridge.out", "w", stdout);
- int x, a, y, b, l;
- cin >> x >> a >> y >> b >> l;
- int lo = min(a,b) + 1, hi = 50000;
- while (lo < hi)
- {
- int mid = (lo + hi) / 2;
- bool good = 1;
- fill_n(&dp[0][0], N * N, INF);
- dp[0][0] = 0;
- for (int i = 1; i <= l; ++i)
- {
- for (int j = 0; j <= x; ++j)
- {
- for (int kx = 0; kx <= j; ++kx)
- {
- int ky = max(0, (mid - kx * a + b - 1) / b);
- dp[i][j] = min(dp[i][j], dp[i - 1][j - kx] + ky);
- }
- }
- }
- good = 0;
- for (int i = 0; i <= x; ++i)
- good |= (dp[l][i] <= y);
- if (good)
- lo = mid + 1;
- else
- hi = mid;
- }
- cout << lo - 1 << "\n";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement