Submission #1126430

#TimeUsernameProblemLanguageResultExecution timeMemory
1126430ttamxTreatment Project (JOI20_treatment)C++20
35 / 100
1685 ms589824 KiB
#include<bits/stdc++.h> using namespace std; using ll = long long; using P =pair<ll,int>; const int N=1e5+5; const ll INF=LLONG_MAX/2; int n,m; int t[N],l[N],r[N],c[N]; vector<int> adj[N]; priority_queue<P,vector<P>,greater<P>> pq; ll dist[N]; ll ans=INF; int main(){ cin.tie(nullptr)->sync_with_stdio(false); cin >> m >> n; for(int i=1;i<=n;i++){ cin >> t[i] >> l[i] >> r[i] >> c[i]; } for(int i=1;i<=n;i++){ for(int j=1;j<=n;j++){ if(i==j)continue; if(t[i]<=t[j]){ if(r[i]+t[i]>=l[j]+t[j]-1){ adj[i].emplace_back(j); } }else{ if(r[i]-t[i]>=l[j]-t[j]-1){ adj[i].emplace_back(j); } } } } for(int i=1;i<=n;i++){ dist[i]=INF; } for(int i=1;i<=n;i++){ if(l[i]==1){ dist[i]=c[i]; pq.emplace(c[i],i); } } while(!pq.empty()){ auto [d,u]=pq.top(); pq.pop(); if(d>dist[u])continue; for(auto v:adj[u]){ ll nd=d+c[v]; if(nd<dist[v]){ dist[v]=nd; pq.emplace(nd,v); } } } for(int i=1;i<=n;i++){ if(r[i]==m){ ans=min(ans,dist[i]); } } cout << (ans<INF?ans:-1LL); }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...