제출 #1100102

#제출 시각아이디문제언어결과실행 시간메모리
1100102_8_8_치료 계획 (JOI20_treatment)C++17
35 / 100
1411 ms524288 KiB
#include <bits/stdc++.h>
    
using namespace std;
    
typedef long long ll;
    
const int  N = 2e5 + 12, MOD = (int)1e9 + 7;
    
const ll inf = 1e18;
ll res = inf, d[N];
int n, m;
vector<array<int, 4>> a;
    
bool cmp(array<int, 4> x, array<int, 4> y) {
    return make_pair(x[1], x[2]) < make_pair(y[1], y[2]);
}
vector<int> g[N];
void test() {
    cin >> n >> m;
    a.resize(m);
    for(int i = 0; i < m; i++) {
        cin >> a[i][0] >> a[i][1] >> a[i][2] >> a[i][3], d[i] = inf;
    }
    for(int i = 0; i < m; i++) {
        for(int j = 0; j < m; j++) {
            if(i == j) continue;
            ll inter = a[i][2] - a[j][1] + 1, val = abs(a[i][0] - a[j][0]);
            if(a[j][1] + val <= a[i][2] + 1) {
                g[i].push_back(j);
            }
        }
    }
    set<pair<ll, int>> st;
    for(int i = 0; i < m; i++) {    
        if(a[i][1] == 1) {
            d[i] = 0;
            st.insert({0, i});
        }
    }
    while(!st.empty()) {
        auto [w, v] = (*st.begin());
        st.erase(st.begin());
        for(int to:g[v]) {
            if(d[to] > d[v] + a[v][3]) {
                st.erase({d[to], to});
                d[to] = d[v] + a[v][3];
                st.insert({d[to], to});
            }
        }
    }
    for(int i = 0; i < m; i++) if(a[i][2] == n){
        res = min(res, d[i] + a[i][3]);
    }
    if(res == inf) {
        res = -1;
    }
    cout << res << '\n';
}
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0); 
    
    int t = 1; 
    // cin >> t;
    
    while(t--) 
        test();
    
    return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

treatment.cpp: In function 'void test()':
treatment.cpp:27:16: warning: unused variable 'inter' [-Wunused-variable]
   27 |             ll inter = a[i][2] - a[j][1] + 1, val = abs(a[i][0] - a[j][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...