Submission #1287640

#TimeUsernameProblemLanguageResultExecution timeMemory
1287640paulxaxaCloud Computing (CEOI18_clo)C++20
100 / 100
234 ms1248 KiB
#include <bits/stdc++.h> #define NMAX 2000 #define LOG 19 #define ll long long int #define MOD 30103 #define INF (ll)1e17 using namespace std; ifstream fin("cod.in"); ofstream fout("cod.out"); struct triplet { int c,f,v; } a[NMAX+1],b[NMAX+1]; int n,m; bool cmp(triplet x, triplet y) { return x.f > y.f; } ll dp[50*NMAX+1]; void add_dp(int j,int c) { for(int i=NMAX*50;i>=j;i--) { dp[i] = min(dp[i],dp[i-j] + c); } } void remove_dp(int j,int c) { for(int i=0;i+j<=NMAX*50;i++) { dp[i] = min(dp[i],dp[i+j] - c); } } int main() { cin >> n; for(int i=1;i<=n;i++) { cin >> a[i].c >> a[i].f >> a[i].v; } cin >> m; for(int i=1;i<=m;i++) { cin >> b[i].c >> b[i].f >> b[i].v; } sort(a+1,a+n+1,cmp); sort(b+1,b+m+1,cmp); for(int i=1;i<=NMAX*50;i++) { dp[i] = INF; } dp[0] = 0; int j=1; for(int i=1;i<=m;i++) { while(j<=n && a[j].f >= b[i].f) { add_dp(a[j].c,a[j].v); j++; } remove_dp(b[i].c, b[i].v); } ll mn=INF; for(int i=0;i<=50*NMAX;i++) { mn=min(mn,dp[i]); } cout << -mn; }
#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...