Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- #include <ext/pb_ds/assoc_container.hpp>
- #include <ext/pb_ds/tree_policy.hpp>
- #pragma GCC optimize("Ofast")
- //#pragma GCC target("sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,avx,tune=native")
- #pragma GCC optimize("unroll-loops")
- using namespace std;
- using namespace __gnu_pbds;
- #define hash hui
- #define pb push_back
- #define F first
- #define S second
- #define ll long long
- #define ld double long
- #define ull unsigned long long
- const int N = 1010;
- const ll INF = 1e16 + 36;
- int n;
- //mt19937 gen(chrono::high_resolution_clock::now().time_since_epoch().count());
- mt19937 gen(37109);
- signed main() {
- ios_base::sync_with_stdio(0);
- #ifdef LOCAL
- freopen("input.txt", "r", stdin);
- freopen("output.txt", "w", stdout);
- #else
- // freopen("sum.in", "r", stdin);
- // freopen("sum.out", "w", stdout);
- #endif // LOCAL
- int s1, s2;
- cin >> n >> s1 >> s2;
- ll dp[N][N];
- for(int i = 0 ; i < N ; i++) {
- for(int j = 0 ; j < N ; j++) {
- dp[i][j] = INF;
- }
- }
- dp[0][0] = 0;
- vector<array<ll, 4> > x(n);
- for(int i = 0 ; i < n ; i++) {
- for(int j = 0 ; j < 4 ;j++) cin >> x[i][j];
- }
- for(int i = 0 ; i < n ; i++) {
- for(int j = N - 1 ; j >= 0 ; j--) {
- for(int k = N - 1 ; k >= 0 ; k--) {
- if(j - x[i][0] >= 0 && j - x[i][0] < s1) {
- if(dp[j][k] > dp[j - x[i][0]][k] + x[i][1]) dp[j][k] = dp[j - x[i][0]][k] + x[i][1];
- }
- if(k - x[i][2] >= 0) {
- if(dp[j][k] > dp[j][k - x[i][2]] + x[i][3]) dp[j][k] = dp[j][k - x[i][2]] + x[i][3];
- }
- }
- }
- }
- ll ans = INF;
- for(int i = 0 ; i < N ; i++) {
- for(int j = 0 ; j < N ; j++) {
- if(i >= s1 && i + j >= s1 + s2 && dp[i][j] < ans) ans = dp[i][j];
- }
- }
- if(ans == INF) cout << -1;
- else cout << ans;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement