Submission #1133110

#TimeUsernameProblemLanguageResultExecution timeMemory
1133110pokmui9909Treatment Project (JOI20_treatment)C++17
35 / 100
915 ms589824 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; #define x first #define y second ll N, M, T[100005], L[100005], R[100005], C[100005], D[100005]; vector<ll> G[100005]; int main(){ cin.tie(0) -> sync_with_stdio(0); cin >> N >> M; fill(D, D + 100005, 1e18); priority_queue<pair<ll, ll>> PQ; for(ll i = 1; i <= M; i++){ cin >> T[i] >> L[i] >> R[i] >> C[i]; if(L[i] == 1){ D[i] = C[i]; PQ.push({-C[i], i}); } } for(ll i = 1; i <= M; i++){ for(ll j = 1; j <= M; j++){ if(R[i] - abs(T[i] - T[j]) >= L[j] - 1){ G[i].push_back(j); } } } ll Ans = 1e18; while(!PQ.empty()){ ll c = -PQ.top().x, u = PQ.top().y; PQ.pop(); if(D[u] < c) continue; if(R[u] == N){ Ans = min(Ans, c); } for(auto v : G[u]){ if(D[v] <= D[u] + C[v]) continue; D[v] = D[u] + C[v]; PQ.push({-D[v], v}); } } cout << (Ans == 1e18 ? -1 : 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...