제출 #511194

#제출 시각아이디문제언어결과실행 시간메모리
511194600MihneaSalesman (IOI09_salesman)C++17
17 / 100
3100 ms21284 KiB
#include <bits/stdc++.h> using namespace std; const int N = (int) 5e5 + 7; const int INF = (int) 1e9 + 7; int n, u, d; int t[N]; int x[N]; int g[N]; int dp[N]; signed main() { ios::sync_with_stdio(0); cin.tie(0); ///freopen ("input", "r", stdin); cin >> n >> u >> d >> x[0]; for (int i = 1; i <= n; i++) { cin >> t[i] >> x[i] >> g[i]; dp[i] = -INF; } t[n + 1] = (int) 5e5 + 1; x[n + 1] = x[0]; vector<pair<int, int>> ord; for (int i = 0; i <= n; i++) { ord.push_back({t[i], i}); } sort(ord.begin(), ord.end()); for (auto &it : ord) { int i = it.second; dp[i] += g[i]; ///cout << i << " : " << dp[i] << "\n"; for (int j = 0; j <= n + 1; j++) { if (t[i] < t[j]) { int dist = abs(x[i] - x[j]); if (x[i] < x[j]) { dp[j] = max(dp[j], dp[i] - u * dist); } else { dp[j] = max(dp[j], dp[i] - d * dist); } } } } cout << dp[n + 1] << "\n"; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...