Submission #1171108

#TimeUsernameProblemLanguageResultExecution timeMemory
1171108niepamietamhaslaTwo Dishes (JOI19_dishes)C++20
3 / 100
1 ms400 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; const int MAXN = 1e3 + 5; ll c1[MAXN]; ll c2[MAXN]; ll t1[MAXN]; ll t2[MAXN]; ll p1[MAXN]; ll p2[MAXN]; ll pref1[MAXN]; ll pref2[MAXN]; const ll INF = -1e18; ll dp[MAXN][MAXN]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n, m; cin >> n >> m; int a, b, c; for(int i = 1; i <= n; ++i){ cin >> c1[i] >> t1[i] >> p1[i]; } for(int i = 1; i <= m; ++i){ cin >> c2[i] >> t2[i] >> p2[i]; } for(int i = 1; i <= n; ++i){ pref1[i] = pref1[i - 1] + c1[i]; } for(int i = 1; i <= m; ++i){ pref2[i] = pref2[i - 1] + c2[i]; } for(int i = 1; i <= n; ++i){ dp[i][0] = dp[i-1][0] + (pref1[i] <= t1[i] ? p1[i] : 0); } for(int i = 1; i <= m; ++i){ dp[0][i] = dp[0][i-1] + (pref2[i] <= t2[i] ? p2[i] : 0); } for(int i = 1; i <= n; ++i){ for(int j = 1; j <= m; ++j){ ll k1 = -INF; if(pref1[i-1] + pref2[j] + c1[i] <= t1[i]){ k1 = dp[i-1][j] + p1[i]; } else{ k1 = dp[i-1][j]; } ll k2 = -INF; if(pref1[i] + pref2[j-1] + c2[j] <= t2[j]){ k2 = dp[i][j-1] + p2[j]; } else{ k2 = dp[i][j-1]; } dp[i][j] = max(k1, k2); } } cout << dp[n][m] << "\n"; return 0; }
#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...