답안 #906499

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
906499 2024-01-14T11:08:24 Z vjudge1 Shortcut (IOI16_shortcut) C++17
0 / 100
1 ms 600 KB
#include "shortcut.h"
#include <bits/stdc++.h>

#pragma GCC optimize("Ofast,unroll-loops")
#pragma GCC target("avx,avx2,fma")

using namespace std;

using vi = vector<int>;
using ll = long long;

ll find_shortcut(int n, vi l, vi d, int c) {
    vector<ll> sl;    
    for(int i = 0; i < n - 1; ++i) {
        sl.push_back(l[i]);
        if(i) sl[i] += sl[i - 1];
    }

    auto dist_direct = [&](int u, int v) {
        if(u > v) swap(u, v);
        if(!v) return 0ll;
        if(u) return sl[v - 1] - sl[ u - 1 ];
        else return sl[v - 1];
    };
    vector<vector<ll> > DD(n, vector(n, 0ll));
    for(int i = 0; i < n; ++i)
        for(int j = 0; j < n; ++j) DD[i][j] = dist_direct(i, j);

    auto dist = [&](int u, int v, int st, int dr) { /// (st, dr) express line
        ll re = DD[u][v];
        re = min(re, DD[u][st] + DD[dr][v] + c);
        re = min(re, DD[u][dr] + DD[st][v] + c);
        return re + d[u] + d[v];
    };
    ll re = 1e18;
    auto simu = [&](int st, int dr, ll rec, int &ri, int &rj) {
        ll cre = dist(ri, rj, st, dr);
        if(cre > rec) return cre;
        for(int i = 0; i < n; ++i)
            for(int j = i + 1; j < n; ++j) {
                ll val = dist(i, j, st, dr);
                if(val > cre) {
                    ri = i;
                    rj = j;
                    cre = val;
                }
                if(cre > rec) return cre;
            }
        return cre;
    };
    vector<pair<int, int> > O;
    int ri = 0, rj = 0;
    for(int st = 0; st < n; ++st) {
        for(int dr = st + 1; dr < n; ++dr) {
            auto cre = simu(st, dr, re, ri, rj);
            re = min(re, cre);
        }
    }
    return re; 
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB n = 4, 80 is a correct answer
2 Correct 0 ms 348 KB n = 9, 110 is a correct answer
3 Correct 1 ms 348 KB n = 4, 21 is a correct answer
4 Correct 0 ms 600 KB n = 3, 4 is a correct answer
5 Incorrect 0 ms 424 KB n = 2, incorrect answer: jury 62 vs contestant 72
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB n = 4, 80 is a correct answer
2 Correct 0 ms 348 KB n = 9, 110 is a correct answer
3 Correct 1 ms 348 KB n = 4, 21 is a correct answer
4 Correct 0 ms 600 KB n = 3, 4 is a correct answer
5 Incorrect 0 ms 424 KB n = 2, incorrect answer: jury 62 vs contestant 72
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB n = 4, 80 is a correct answer
2 Correct 0 ms 348 KB n = 9, 110 is a correct answer
3 Correct 1 ms 348 KB n = 4, 21 is a correct answer
4 Correct 0 ms 600 KB n = 3, 4 is a correct answer
5 Incorrect 0 ms 424 KB n = 2, incorrect answer: jury 62 vs contestant 72
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB n = 4, 80 is a correct answer
2 Correct 0 ms 348 KB n = 9, 110 is a correct answer
3 Correct 1 ms 348 KB n = 4, 21 is a correct answer
4 Correct 0 ms 600 KB n = 3, 4 is a correct answer
5 Incorrect 0 ms 424 KB n = 2, incorrect answer: jury 62 vs contestant 72
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB n = 4, 80 is a correct answer
2 Correct 0 ms 348 KB n = 9, 110 is a correct answer
3 Correct 1 ms 348 KB n = 4, 21 is a correct answer
4 Correct 0 ms 600 KB n = 3, 4 is a correct answer
5 Incorrect 0 ms 424 KB n = 2, incorrect answer: jury 62 vs contestant 72
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB n = 4, 80 is a correct answer
2 Correct 0 ms 348 KB n = 9, 110 is a correct answer
3 Correct 1 ms 348 KB n = 4, 21 is a correct answer
4 Correct 0 ms 600 KB n = 3, 4 is a correct answer
5 Incorrect 0 ms 424 KB n = 2, incorrect answer: jury 62 vs contestant 72
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB n = 4, 80 is a correct answer
2 Correct 0 ms 348 KB n = 9, 110 is a correct answer
3 Correct 1 ms 348 KB n = 4, 21 is a correct answer
4 Correct 0 ms 600 KB n = 3, 4 is a correct answer
5 Incorrect 0 ms 424 KB n = 2, incorrect answer: jury 62 vs contestant 72
6 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 348 KB n = 4, 80 is a correct answer
2 Correct 0 ms 348 KB n = 9, 110 is a correct answer
3 Correct 1 ms 348 KB n = 4, 21 is a correct answer
4 Correct 0 ms 600 KB n = 3, 4 is a correct answer
5 Incorrect 0 ms 424 KB n = 2, incorrect answer: jury 62 vs contestant 72
6 Halted 0 ms 0 KB -