Submission #518449

#TimeUsernameProblemLanguageResultExecution timeMemory
518449Yazan_AlattarCloud Computing (CEOI18_clo)C++14
100 / 100
408 ms1248 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 = 300007; 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}; pair < ll, pair <ll,ll> > 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].S.F >> a[i].F >> a[i].S.S; cin >> m; for(int i = 1; i <= m; ++i) cin >> b[i].S.F >> b[i].F >> b[i].S.S; sort(a + 1, a + n + 1); sort(b + 1, b + m + 1); for(int i = 1; i <= 1e5; ++i) dp[i] = -inf; int pos = n; for(int i = m; i > 0; --i){ while(a[pos].F >= b[i].F){ for(int j = 1e5; j >= a[pos].S.F; --j){ dp[j] = max(dp[j], dp[j - a[pos].S.F] - a[pos].S.S); } --pos; } for(int j = b[i].S.F; j <= 1e5; ++j) dp[j - b[i].S.F] = max(dp[j - b[i].S.F], dp[j] + b[i].S.S); } ll ans = 0; for(int i = 0; i <= 1e5; ++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...