Submission #1164948

#TimeUsernameProblemLanguageResultExecution timeMemory
1164948vladilius은하철도 (APIO24_train)C++20
5 / 100
1096 ms11192 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; using pii = pair<int, int>; #define pb push_back #define ff first #define ss second const ll inf = 1e18; const int A = 1e9; ll solve(int n, int m, int w, vector<int> t, vector<int> x, vector<int> y, vector<int> a, vector<int> b, vector<int> c, vector<int> l, vector<int> r){ vector<int> g[n + 1]; for (int i = 0; i < m; i++){ x[i]++; y[i]++; g[y[i]].pb(i); } t.insert(t.begin(), 0); vector<pii> all; for (int i = 0; i < w; i++){ all.pb({l[i], r[i]}); } auto f = [&](int l, int r){ int out = 0; for (auto [x, y]: all){ out += (l < x && y < r); } return out; }; vector<pii> ed; for (int i = 0; i < m; i++){ ed.pb({a[i], i}); } sort(ed.begin(), ed.end()); vector<ll> dp(m, inf); ll out = inf; for (auto [B, i]: ed){ ll mn = inf; for (int j: g[x[i]]){ if (b[j] <= a[i]){ mn = min(mn, dp[j] + 1LL * t[x[i]] * f(b[j], a[i])); } } if (x[i] == 1) mn = min(mn, 1LL * t[x[i]] * f(0, a[i])); dp[i] = mn + c[i]; if (y[i] == n){ out = min(out, dp[i] + 1LL * t[n] * f(b[i], A + 1)); } } if (out == inf) return -1; return out; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...