제출 #1186589

#제출 시각아이디문제언어결과실행 시간메모리
1186589MarwenElarbiTwo Dishes (JOI19_dishes)C++20
0 / 100
494 ms1114112 KiB
#include <bits/stdc++.h>
using namespace std;
int main() {
    int n,m;
    cin>>n>>m;
    vector<int> a(n+1);
    vector<int> s(n+1);
    vector<int> p(n+1);
    vector<int> b(m+1);
    vector<int> t(m+1);
    vector<int> q(m+1);
    vector<long long> pre(n+1,0);
    vector<long long> suf(m+1,0);
    for (int i = 1; i <= n; ++i)
    {
        cin>>a[i]>>s[i]>>p[i];
        pre[i]=a[i]+pre[i-1];
    }
    for (int i = 1; i <= m; ++i)
    {
        cin>>b[i]>>t[i]>>q[i];
        suf[i]=b[i]+suf[i-1];
    }
    long long dp[n+1][m+1];
    memset(dp,0,sizeof dp);
    for (int i = 0; i <= n; ++i)
    {
        for (int j = 0; j <= m; ++j)
        {
            if(i==0&&j==0) continue;
            if(i>0){
                if(pre[i]+suf[j] <= s[i]) dp[i][j]=max(dp[i][j],dp[i-1][j]+p[i]);
                else dp[i][j]=max(dp[i][j],dp[i-1][j]);
            }
            if(j>0){
                if(pre[i]+suf[j] <= t[j]) dp[i][j]=max(dp[i][j],dp[i][j-1]+q[j]);
                else dp[i][j]=max(dp[i][j],dp[i][j-1]);
            }
        }
    }
    cout <<dp[n][m]<<endl;
}
#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...