165062025-05-04 23:55:53algoproJobstown-i milliomoscpp17Hibás válasz 0/1008ms512 KiB
// UUID: f623f970-6746-4fd8-aac8-36d4fdffdbcd
#include <bits/stdc++.h>
using namespace std;

void solve(){
    int n, limit;
    cin >> n >> limit;

    vector<pair<long long, long long>> jobs(n);

    long long bv = 0, bw = 1;

    for (int i = 0; i < n; i++) {
        cin >> jobs[i].first;
    }
    for (int i = 0; i < n; i++) {
        cin >> jobs[i].second;

        if (1.0 * jobs[i].second / jobs[i].first > 1.0 * bv / bw) {
            bv = jobs[i].second;
            bw = jobs[i].first;
        }
    }
        
    int db = 0;

    if (limit > 5000) {
        db = (limit - 4000) / bw;
    }

    limit = limit - bw * db;

    vector<long long> dp(limit + 1, 0);
    dp[0] = db * bw;

    for (int i = 0; i <= limit; i++) {
        for (const auto& j : jobs) {
            if (j.first <= i) {
                dp[i] = max(dp[i], dp[i - j.first] + j.second);
            }

        }
    }

    cout << dp[limit];
}

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);


    solve();
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
subtask10/0
1Elfogadva1ms316 KiB
2Elfogadva1ms508 KiB
subtask20/25
3Elfogadva1ms316 KiB
4Elfogadva1ms316 KiB
5Hibás válasz7ms316 KiB
6Hibás válasz7ms508 KiB
7Hibás válasz7ms464 KiB
8Hibás válasz7ms316 KiB
9Hibás válasz7ms464 KiB
10Hibás válasz7ms464 KiB
11Hibás válasz7ms316 KiB
12Hibás válasz7ms464 KiB
13Hibás válasz7ms464 KiB
14Hibás válasz1ms316 KiB
subtask30/16
15Hibás válasz7ms316 KiB
16Hibás válasz7ms508 KiB
17Hibás válasz7ms508 KiB
18Hibás válasz1ms316 KiB
19Hibás válasz7ms316 KiB
20Hibás válasz7ms464 KiB
21Hibás válasz7ms316 KiB
subtask40/59
22Elfogadva1ms500 KiB
23Elfogadva1ms444 KiB
24Hibás válasz7ms500 KiB
25Hibás válasz7ms512 KiB
26Hibás válasz7ms460 KiB
27Hibás válasz7ms464 KiB
28Hibás válasz7ms316 KiB
29Hibás válasz8ms316 KiB
30Hibás válasz1ms316 KiB
31Hibás válasz7ms460 KiB
32Hibás válasz7ms316 KiB
33Hibás válasz7ms316 KiB