Submission #518439

#TimeUsernameProblemLanguageResultExecution timeMemory
518439Yazan_AlattarCloud Computing (CEOI18_clo)C++14
0 / 100
3087 ms332 KiB
#include <iostream> #include <fstream> #include <vector> #include <cstring> #include <algorithm> #include <set> #include <map> #include <queue> #include <list> #include <utility> #include <cmath> #include <numeric> #include <assert.h> using namespace std; typedef long long ll; #define F first #define S second #define pb push_back #define endl "\n" #define all(x) x.begin(), x.end() const int M = 10007; const ll inf = 1e18; const ll mod = 1e9 + 7; const double pi = acos(-1); const int dx[] = {1, 0, -1, 0}, dy[] = {0, 1, 0, -1}; struct item{ ll c = 0, f = 0, v = 0; }; bool cmp(item a, item b) { return a.f <= b.f; } item a[M], b[M]; ll n, m, dp[M]; int main() { ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); 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 < M; ++i) dp[i] = -inf; int pos = n; for(int i = m; i; --i){ while(a[pos].f >= b[i].f){ for(int j = M - 1; j >= a[pos].c; --j){ dp[j] = max(dp[j], dp[j - a[pos].c] - a[pos].v); } --pos; } for(int j = b[i].c; j < M; ++j) dp[j - b[i].c] = max(dp[j - b[i].c], dp[j] + b[i].v); } while(1); ll ans = 0; for(int i = 0; i < M; ++i) ans = max(ans, dp[i]); cout << ans << endl; 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...