제출 #1313449

#제출 시각아이디문제언어결과실행 시간메모리
1313449hssaan_arifCloud Computing (CEOI18_clo)C++20
36 / 100
328 ms2348 KiB
// #include <bits/stdc++.h> #include <iostream> #include <cmath> #include <algorithm> #include <map> #include <unordered_map> #include <vector> #include <iomanip> #include <string> #include <queue> #include <set> #include <deque> using namespace std; #define endl "\n" #define pb push_back #define int long long #define fi first #define se second const int N = 1e5 + 5, M = 1e9 + 7, LG = 20; int n , A[N] , u , v , w , m; bool comp(vector<int> a , vector<int> b){ if (a[0] != b[0]){ return a[0] > b[0]; } return !a[3]; } void solve(){ cin >> n; vector<vector<int>> cp; for (int i=1 ; i<=n ; i++){ cin >> u >> v >> w; cp.pb({v,u,w,0}); } cin >> m; for (int i=1 ; i<=m ; i++){ cin >> u >> v >> w; cp.pb({v,u,w,1}); } int dp[2*N] = {}; for (int i=1 ; i<N ; i++) dp[i] = -1e18; dp[0] = 0; sort(cp.begin(),cp.end(),comp); for (auto &i : cp){ int c = i[1]; int v = i[2]; if (i[3] == 1){ for (int i=0 ; i+c<N ; i++){ if (dp[i+c] == -1e18) continue; dp[i] = max(dp[i] , dp[i+c] + v); } }else{ for (int i=N-1 ; i>=c ; i--){ if (dp[i-c] == -1e18) continue; dp[i] = max(dp[i] , dp[i-c] - v); } } } int ans = 0; for (int i=0 ; i<N ; i++){ ans = max(ans , dp[i]); } cout << ans << endl; } signed main(){ // freopen("" , "r" , stdin); // freopen("" , "w" , stdout); // cout << setprecision(30); ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int ts = 1; // cin >> ts; while(ts--){ solve(); } }
#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...