Submission #1183525

#TimeUsernameProblemLanguageResultExecution timeMemory
1183525amine_arouaTwo Dishes (JOI19_dishes)C++20
10 / 100
799 ms1114112 KiB
#include<bits/stdc++.h>
using namespace std;
#define int long long
const int INF = 3e18;
signed main()
{
    int n , m;
    cin>>n>>m;
    vector<int> a(n + 1) , s(n + 1) , p(n + 1) , b(m + 1) , t(m + 1) , q(m + 1) , f(n + 1) , g(m + 1);
    for(int i = 1 ; i <= n ; i++)
    {
        cin>>a[i]>>s[i]>>p[i];
        f[i] = a[i] + f[i - 1];
    }
    for(int i = 1 ; i <= m ; i++)
    {
        cin>>b[i]>>t[i]>>q[i];
        g[i] = b[i] + g[i - 1];
    }
    vector<vector<int>> dp(n + 1 , vector<int>(m + 1 , -INF));
    dp[0][0] = 0;
    for(int i = 0 ; i <= n ; i++)
    {
        for(int j = 0 ; j <= m ; j++)
        {
            if(i >= 1)
            {
                dp[i][j] = max(dp[i][j] , dp[i - 1][j] + ((f[i] + g[j]) <= s[i] ? p[i] : 0ll));
            }
            if(j >= 1)
            {
                dp[i][j] = max(dp[i][j] , dp[i][j - 1] + ((f[i] + g[j]) <= t[j] ? q[j] : 0ll));
            }
        }
    }
    cout<<dp[n][m]<<'\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...