제출 #1185956

#제출 시각아이디문제언어결과실행 시간메모리
1185956gyg나일강 (IOI24_nile)C++20
17 / 100
2096 ms4912 KiB
#include "nile.h" #include <bits/stdc++.h> using namespace std; #define sig signed #define int long long #define arr array #define vec vector #define pii pair<int, int> #define fir first #define sec second const int N = 1e5 + 5, INF = 1e18; int n; arr<pii, N> a; arr<arr<int, 2>, N> dp; int slv(int d) { for (int i = 1; i <= n; i++) { for (int b : {0, 1}) { dp[i][b] = (b == 1) ? a[i].sec : -INF; for (int j = 1; j <= i - 1; j++) { if (b == 0 && a[i].fir - a[j].fir > d) continue; dp[i][b] = max(dp[i][b], dp[j][!b] + a[i].sec); } } } int ans = 0; for (int i = 1; i <= n; i++) ans = max(ans, dp[i][0]); return ans; } vec<int> calculate_costs(vec<sig> _ps, vec<sig> _fl, vec<sig> _pr, vec<sig> _qr) { n = _ps.size(); int sm = 0; for (int i = 1; i <= n; i++) { a[i] = {_ps[i - 1], _fl[i - 1] - _pr[i - 1]}; sm += _fl[i - 1]; } sort(a.begin() + 1, a.begin() + n + 1); // for (int i = 1; i <= n; i++) // cout << a[i].fir << " " << a[i].sec << '\n'; vec<int> ans; for (int d : _qr) ans.push_back(sm - slv(d)); return ans; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...