제출 #1284997

#제출 시각아이디문제언어결과실행 시간메모리
1284997tudor_costin치료 계획 (JOI20_treatment)C++20
0 / 100
103 ms1844 KiB
#include <bits/stdc++.h> using namespace std; const int Mmax=1e5+5; struct tratament { int t,l,r,c; }; tratament trat[Mmax]; bool viz[Mmax]; vector<pair<int,int>> g[Mmax]; int main() { int n,m; cin>>n>>m; priority_queue<pair<int,int>> pq; bool ok=1; for(int i=1;i<=m;i++) { cin>>trat[i].t>>trat[i].l>>trat[i].r>>trat[i].c; if(trat[i].t!=1) ok=0; if(trat[i].l==1) { pq.push({-trat[i].c,i}); } } assert(!ok); for(int i=1;i<=m;i++) { for(int j=1;j<=m;j++) { if(j==i) continue; if(trat[i].t<trat[j].t) { if(trat[i].r+trat[i].t>=trat[j].l+trat[j].t-1) g[i].push_back({j,trat[j].c}); } else { if(trat[i].r-trat[i].t>=trat[j].l-trat[j].t-1) g[i].push_back({j,trat[j].c}); } } } while(!pq.empty()) { auto [val,nod]=pq.top(); pq.pop(); if(viz[nod]) continue; ///cout<<nod<<' '<<-val<<'\n'; viz[nod]=1; if(trat[nod].r==n) { cout<<-val<<'\n'; return 0; } for(auto [u,cost]:g[nod]) { if(!viz[u]) pq.push({val-cost,u}); } } cout<<-1<<'\n'; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...