168452025-05-13 21:49:17algoproJobstown-i milliomoscpp17Accepted 100/10017ms760 KiB
// UUID: 74b2c076-3fa1-4f2c-a25c-7a32e46deba1
#include <bits/stdc++.h>
using namespace std;



int main() {
    #define int long long
    int DP_LEN = 25000;
    ios::sync_with_stdio(false);
    cin.tie(0);
    int n,m;cin >> n >> m;
    vector<int> v(n);
    vector<int> t(n);
    for(int i = 0; i < n; i++)
    {
        cin >> t[i];
    }
    for(int i = 0; i < n; i++)
    {
        cin >> v[i];
    }

    int l = min(m, DP_LEN);
    vector<int> dp(l+1);
    dp[0] = 0;
    for(int i = 0; i < l; i++)
    {
        int max_num = 0;
        for(int j = 0; j < n; j++)
        {
            if(i + 1 - t[j] >= 0) max_num = max(max_num, dp[i + 1 -t[j]] + v[j]);
            // if(i + 1 - t[j] >= 0) max_num = max(dp[i], max(max_num, dp[i + 1 -t[j]] + v[j]));
        }
        dp[i+1] = max_num;
    }
    int max_n = 0;
    for(int i = 0; i < l+1; i++)
    {
        max_n = max(dp[i], max_n);
    }
    pair<int, int> max_avg = {v[0], t[0]};
    for(int i = 1; i < n; i++)
    {
        if(v[i] * max_avg.second > t[i] * max_avg.first)
        {
            max_avg.first = v[i];
            max_avg.second = t[i];
        } 
    }   
    if(m <= DP_LEN)
    {
        cout << max_n;
    }
    else 
    {
        int max_num = 0;
        for(int i = 0; i <= DP_LEN; i++)
        {
            max_num = max(max_num, dp[i] + (m - i) / max_avg.second * max_avg.first);
        }
        cout << max_num;
    }
    
}
SubtaskSumTestVerdictTimeMemory
subtask10/0
1Accepted1ms316 KiB
2Accepted1ms316 KiB
subtask225/25
3Accepted1ms416 KiB
4Accepted1ms316 KiB
5Accepted17ms564 KiB
6Accepted17ms568 KiB
7Accepted17ms568 KiB
8Accepted17ms756 KiB
9Accepted17ms564 KiB
10Accepted17ms564 KiB
11Accepted17ms564 KiB
12Accepted16ms564 KiB
13Accepted16ms568 KiB
14Accepted1ms564 KiB
subtask316/16
15Accepted17ms564 KiB
16Accepted17ms756 KiB
17Accepted17ms744 KiB
18Accepted2ms748 KiB
19Accepted16ms564 KiB
20Accepted17ms564 KiB
21Accepted17ms756 KiB
subtask459/59
22Accepted1ms316 KiB
23Accepted1ms508 KiB
24Accepted16ms564 KiB
25Accepted17ms564 KiB
26Accepted17ms564 KiB
27Accepted17ms564 KiB
28Accepted17ms568 KiB
29Accepted16ms564 KiB
30Accepted1ms564 KiB
31Accepted17ms564 KiB
32Accepted17ms760 KiB
33Accepted17ms564 KiB