답안 #1008511

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1008511 2024-06-26T13:55:29 Z AdamGS 치료 계획 (JOI20_treatment) C++17
0 / 100
26 ms 8528 KB
#include<bits/stdc++.h>
using namespace std;
typedef long double ld;
typedef long long ll;
#define rep(a, b) for(int a = 0; a < (b); ++a)
#define st first
#define nd second
#define pb push_back
#define all(a) a.begin(), a.end()
const ll INF=1e18+7;
const int LIM=1e5+7;
pair<pair<ll,ll>,pair<ll,ll>>T[LIM];
ll odl[LIM], odw[LIM];
int main() {
  ios_base::sync_with_stdio(0); cin.tie(0);
  int n, m;
  cin >> n >> m;
  rep(i, m) {
    cin >> T[i].nd.st >> T[i].st.st >> T[i].st.nd >> T[i].nd.nd;
    odl[i]=INF;
    if(T[i].st.st==1) {
      odl[i]=min(odl[i], T[i].nd.nd);
    }
  }
  while(true) {
    pair<ll,ll>mi={INF, INF};
    rep(i, n) if(!odw[i]) mi=min(mi, {odl[i], i});
    if(mi.st==INF) break;
    ll o=mi.st, p=mi.nd;
    odw[p]=1;
    rep(i, m) {
      if(T[p].st.nd-T[i].st.st+1>=abs(T[p].nd.st-T[i].nd.st)) {
        odl[i]=min(odl[i], o+T[i].nd.nd);
      }
    }
  }
  ll ans=INF;
  rep(i, m) if(T[i].st.nd==n) ans=min(ans, odl[i]);
  if(ans==INF) ans=-1;
  cout << ans << '\n';
}
# 결과 실행 시간 메모리 Grader output
1 Runtime error 26 ms 8528 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Runtime error 1 ms 604 KB Execution killed with signal 11
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Runtime error 1 ms 604 KB Execution killed with signal 11
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Runtime error 26 ms 8528 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -