답안 #432216

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
432216 2021-06-18T03:36:56 Z Monchito Shortcut (IOI16_shortcut) C++14
0 / 100
2000 ms 94312 KB
#include "shortcut.h"
#include <queue>
#include <algorithm>
using namespace std;
using ll = long long;

const int MAXN = 2e6;
const ll INF = 1e18;

int N;
vector<int> G[MAXN];
vector<ll> W[MAXN];

ll dijkstra(int x) {
    priority_queue<pair<ll, int>> q;
    vector<ll> dist(N, INF);
    dist[x] = 0;
    q.push(make_pair(-0, x));

    int cnt=0;

    while(!q.empty()) {
        if(cnt>50) break;

        pair<ll, int> p = q.top(); q.pop();
        int u = p.second;

        if(-p.first != dist[u]) continue;

        for(int i=0; i<(int)G[u].size(); i++) {
            int v = G[u][i];
            ll w = W[u][i];

            if(-p.first + w < dist[v]) {
                dist[v] = -p.first + w; 
                q.push( {-dist[v], v } );
            }
        }

        cnt++;
    }

    ll ret=0;
    for(int i=0; i<N; i++) ret = max(ret, dist[i]); 

    return ret;
}

ll calc() {
    ll ret=0;
    for(int i=0; i<N; i++) ret = max(ret, dijkstra(i));
    return ret;
}

void create_link(int u, int v, ll w) {
    G[u].push_back(v);
    W[u].push_back(w);
    G[v].push_back(u);
    W[v].push_back(w);
}

ll find_shortcut(int n, vector<int> l, vector<int> d, int c) {
    N = n;

    for(int i=0; i<n-1; i++) 
        create_link(i, i+1, l[i]);

    for(int i=0; i<n; i++) {
        if(d[i] == 0) continue;
        create_link(i, N, d[i]); 
        N++;
    }

    ll ret = INF;

    for(int i=0; i<n; i++) {
        for(int j=i+1; j<n; j++) {
            create_link(i, j, c);        
            ret = min(ret, calc());

            G[i].pop_back();
            W[i].pop_back();
            G[j].pop_back();
            W[j].pop_back();     
        }
    }

    return ret;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 61 ms 94272 KB n = 4, 80 is a correct answer
2 Correct 58 ms 94196 KB n = 9, 110 is a correct answer
3 Correct 56 ms 94100 KB n = 4, 21 is a correct answer
4 Correct 58 ms 94128 KB n = 3, 4 is a correct answer
5 Correct 56 ms 94148 KB n = 2, 62 is a correct answer
6 Correct 55 ms 94212 KB n = 2, 3 is a correct answer
7 Correct 58 ms 94152 KB n = 3, 29 is a correct answer
8 Correct 58 ms 94148 KB n = 2, 3 is a correct answer
9 Correct 58 ms 94200 KB n = 2, 3 is a correct answer
10 Correct 64 ms 94076 KB n = 2, 2000000001 is a correct answer
11 Correct 57 ms 94192 KB n = 2, 3000000000 is a correct answer
12 Correct 57 ms 94160 KB n = 3, 3000000000 is a correct answer
13 Correct 56 ms 94196 KB n = 3, 3000000000 is a correct answer
14 Correct 55 ms 94156 KB n = 4, 3000000001 is a correct answer
15 Correct 58 ms 94164 KB n = 4, 4000000000 is a correct answer
16 Correct 59 ms 94164 KB n = 5, 4000000000 is a correct answer
17 Correct 55 ms 94088 KB n = 10, 1000000343 is a correct answer
18 Correct 56 ms 94148 KB n = 10, 3189 is a correct answer
19 Correct 63 ms 94124 KB n = 10, 7000000000 is a correct answer
20 Correct 59 ms 94100 KB n = 5, 12 is a correct answer
21 Correct 54 ms 94148 KB n = 5, 25 is a correct answer
22 Correct 56 ms 94196 KB n = 2, 122 is a correct answer
23 Correct 58 ms 94112 KB n = 10, 117 is a correct answer
24 Correct 58 ms 94148 KB n = 10, 336 is a correct answer
25 Correct 55 ms 94148 KB n = 10, 438 is a correct answer
26 Correct 58 ms 94164 KB n = 10, 206 is a correct answer
27 Correct 57 ms 94104 KB n = 10, 636 is a correct answer
28 Correct 56 ms 94312 KB n = 4, 2399 is a correct answer
29 Correct 64 ms 94196 KB n = 10, 10992 is a correct answer
30 Correct 64 ms 94136 KB n = 10, 3112 is a correct answer
31 Execution timed out 2073 ms 94232 KB Time limit exceeded
32 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 61 ms 94272 KB n = 4, 80 is a correct answer
2 Correct 58 ms 94196 KB n = 9, 110 is a correct answer
3 Correct 56 ms 94100 KB n = 4, 21 is a correct answer
4 Correct 58 ms 94128 KB n = 3, 4 is a correct answer
5 Correct 56 ms 94148 KB n = 2, 62 is a correct answer
6 Correct 55 ms 94212 KB n = 2, 3 is a correct answer
7 Correct 58 ms 94152 KB n = 3, 29 is a correct answer
8 Correct 58 ms 94148 KB n = 2, 3 is a correct answer
9 Correct 58 ms 94200 KB n = 2, 3 is a correct answer
10 Correct 64 ms 94076 KB n = 2, 2000000001 is a correct answer
11 Correct 57 ms 94192 KB n = 2, 3000000000 is a correct answer
12 Correct 57 ms 94160 KB n = 3, 3000000000 is a correct answer
13 Correct 56 ms 94196 KB n = 3, 3000000000 is a correct answer
14 Correct 55 ms 94156 KB n = 4, 3000000001 is a correct answer
15 Correct 58 ms 94164 KB n = 4, 4000000000 is a correct answer
16 Correct 59 ms 94164 KB n = 5, 4000000000 is a correct answer
17 Correct 55 ms 94088 KB n = 10, 1000000343 is a correct answer
18 Correct 56 ms 94148 KB n = 10, 3189 is a correct answer
19 Correct 63 ms 94124 KB n = 10, 7000000000 is a correct answer
20 Correct 59 ms 94100 KB n = 5, 12 is a correct answer
21 Correct 54 ms 94148 KB n = 5, 25 is a correct answer
22 Correct 56 ms 94196 KB n = 2, 122 is a correct answer
23 Correct 58 ms 94112 KB n = 10, 117 is a correct answer
24 Correct 58 ms 94148 KB n = 10, 336 is a correct answer
25 Correct 55 ms 94148 KB n = 10, 438 is a correct answer
26 Correct 58 ms 94164 KB n = 10, 206 is a correct answer
27 Correct 57 ms 94104 KB n = 10, 636 is a correct answer
28 Correct 56 ms 94312 KB n = 4, 2399 is a correct answer
29 Correct 64 ms 94196 KB n = 10, 10992 is a correct answer
30 Correct 64 ms 94136 KB n = 10, 3112 is a correct answer
31 Execution timed out 2073 ms 94232 KB Time limit exceeded
32 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 61 ms 94272 KB n = 4, 80 is a correct answer
2 Correct 58 ms 94196 KB n = 9, 110 is a correct answer
3 Correct 56 ms 94100 KB n = 4, 21 is a correct answer
4 Correct 58 ms 94128 KB n = 3, 4 is a correct answer
5 Correct 56 ms 94148 KB n = 2, 62 is a correct answer
6 Correct 55 ms 94212 KB n = 2, 3 is a correct answer
7 Correct 58 ms 94152 KB n = 3, 29 is a correct answer
8 Correct 58 ms 94148 KB n = 2, 3 is a correct answer
9 Correct 58 ms 94200 KB n = 2, 3 is a correct answer
10 Correct 64 ms 94076 KB n = 2, 2000000001 is a correct answer
11 Correct 57 ms 94192 KB n = 2, 3000000000 is a correct answer
12 Correct 57 ms 94160 KB n = 3, 3000000000 is a correct answer
13 Correct 56 ms 94196 KB n = 3, 3000000000 is a correct answer
14 Correct 55 ms 94156 KB n = 4, 3000000001 is a correct answer
15 Correct 58 ms 94164 KB n = 4, 4000000000 is a correct answer
16 Correct 59 ms 94164 KB n = 5, 4000000000 is a correct answer
17 Correct 55 ms 94088 KB n = 10, 1000000343 is a correct answer
18 Correct 56 ms 94148 KB n = 10, 3189 is a correct answer
19 Correct 63 ms 94124 KB n = 10, 7000000000 is a correct answer
20 Correct 59 ms 94100 KB n = 5, 12 is a correct answer
21 Correct 54 ms 94148 KB n = 5, 25 is a correct answer
22 Correct 56 ms 94196 KB n = 2, 122 is a correct answer
23 Correct 58 ms 94112 KB n = 10, 117 is a correct answer
24 Correct 58 ms 94148 KB n = 10, 336 is a correct answer
25 Correct 55 ms 94148 KB n = 10, 438 is a correct answer
26 Correct 58 ms 94164 KB n = 10, 206 is a correct answer
27 Correct 57 ms 94104 KB n = 10, 636 is a correct answer
28 Correct 56 ms 94312 KB n = 4, 2399 is a correct answer
29 Correct 64 ms 94196 KB n = 10, 10992 is a correct answer
30 Correct 64 ms 94136 KB n = 10, 3112 is a correct answer
31 Execution timed out 2073 ms 94232 KB Time limit exceeded
32 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 61 ms 94272 KB n = 4, 80 is a correct answer
2 Correct 58 ms 94196 KB n = 9, 110 is a correct answer
3 Correct 56 ms 94100 KB n = 4, 21 is a correct answer
4 Correct 58 ms 94128 KB n = 3, 4 is a correct answer
5 Correct 56 ms 94148 KB n = 2, 62 is a correct answer
6 Correct 55 ms 94212 KB n = 2, 3 is a correct answer
7 Correct 58 ms 94152 KB n = 3, 29 is a correct answer
8 Correct 58 ms 94148 KB n = 2, 3 is a correct answer
9 Correct 58 ms 94200 KB n = 2, 3 is a correct answer
10 Correct 64 ms 94076 KB n = 2, 2000000001 is a correct answer
11 Correct 57 ms 94192 KB n = 2, 3000000000 is a correct answer
12 Correct 57 ms 94160 KB n = 3, 3000000000 is a correct answer
13 Correct 56 ms 94196 KB n = 3, 3000000000 is a correct answer
14 Correct 55 ms 94156 KB n = 4, 3000000001 is a correct answer
15 Correct 58 ms 94164 KB n = 4, 4000000000 is a correct answer
16 Correct 59 ms 94164 KB n = 5, 4000000000 is a correct answer
17 Correct 55 ms 94088 KB n = 10, 1000000343 is a correct answer
18 Correct 56 ms 94148 KB n = 10, 3189 is a correct answer
19 Correct 63 ms 94124 KB n = 10, 7000000000 is a correct answer
20 Correct 59 ms 94100 KB n = 5, 12 is a correct answer
21 Correct 54 ms 94148 KB n = 5, 25 is a correct answer
22 Correct 56 ms 94196 KB n = 2, 122 is a correct answer
23 Correct 58 ms 94112 KB n = 10, 117 is a correct answer
24 Correct 58 ms 94148 KB n = 10, 336 is a correct answer
25 Correct 55 ms 94148 KB n = 10, 438 is a correct answer
26 Correct 58 ms 94164 KB n = 10, 206 is a correct answer
27 Correct 57 ms 94104 KB n = 10, 636 is a correct answer
28 Correct 56 ms 94312 KB n = 4, 2399 is a correct answer
29 Correct 64 ms 94196 KB n = 10, 10992 is a correct answer
30 Correct 64 ms 94136 KB n = 10, 3112 is a correct answer
31 Execution timed out 2073 ms 94232 KB Time limit exceeded
32 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 61 ms 94272 KB n = 4, 80 is a correct answer
2 Correct 58 ms 94196 KB n = 9, 110 is a correct answer
3 Correct 56 ms 94100 KB n = 4, 21 is a correct answer
4 Correct 58 ms 94128 KB n = 3, 4 is a correct answer
5 Correct 56 ms 94148 KB n = 2, 62 is a correct answer
6 Correct 55 ms 94212 KB n = 2, 3 is a correct answer
7 Correct 58 ms 94152 KB n = 3, 29 is a correct answer
8 Correct 58 ms 94148 KB n = 2, 3 is a correct answer
9 Correct 58 ms 94200 KB n = 2, 3 is a correct answer
10 Correct 64 ms 94076 KB n = 2, 2000000001 is a correct answer
11 Correct 57 ms 94192 KB n = 2, 3000000000 is a correct answer
12 Correct 57 ms 94160 KB n = 3, 3000000000 is a correct answer
13 Correct 56 ms 94196 KB n = 3, 3000000000 is a correct answer
14 Correct 55 ms 94156 KB n = 4, 3000000001 is a correct answer
15 Correct 58 ms 94164 KB n = 4, 4000000000 is a correct answer
16 Correct 59 ms 94164 KB n = 5, 4000000000 is a correct answer
17 Correct 55 ms 94088 KB n = 10, 1000000343 is a correct answer
18 Correct 56 ms 94148 KB n = 10, 3189 is a correct answer
19 Correct 63 ms 94124 KB n = 10, 7000000000 is a correct answer
20 Correct 59 ms 94100 KB n = 5, 12 is a correct answer
21 Correct 54 ms 94148 KB n = 5, 25 is a correct answer
22 Correct 56 ms 94196 KB n = 2, 122 is a correct answer
23 Correct 58 ms 94112 KB n = 10, 117 is a correct answer
24 Correct 58 ms 94148 KB n = 10, 336 is a correct answer
25 Correct 55 ms 94148 KB n = 10, 438 is a correct answer
26 Correct 58 ms 94164 KB n = 10, 206 is a correct answer
27 Correct 57 ms 94104 KB n = 10, 636 is a correct answer
28 Correct 56 ms 94312 KB n = 4, 2399 is a correct answer
29 Correct 64 ms 94196 KB n = 10, 10992 is a correct answer
30 Correct 64 ms 94136 KB n = 10, 3112 is a correct answer
31 Execution timed out 2073 ms 94232 KB Time limit exceeded
32 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 61 ms 94272 KB n = 4, 80 is a correct answer
2 Correct 58 ms 94196 KB n = 9, 110 is a correct answer
3 Correct 56 ms 94100 KB n = 4, 21 is a correct answer
4 Correct 58 ms 94128 KB n = 3, 4 is a correct answer
5 Correct 56 ms 94148 KB n = 2, 62 is a correct answer
6 Correct 55 ms 94212 KB n = 2, 3 is a correct answer
7 Correct 58 ms 94152 KB n = 3, 29 is a correct answer
8 Correct 58 ms 94148 KB n = 2, 3 is a correct answer
9 Correct 58 ms 94200 KB n = 2, 3 is a correct answer
10 Correct 64 ms 94076 KB n = 2, 2000000001 is a correct answer
11 Correct 57 ms 94192 KB n = 2, 3000000000 is a correct answer
12 Correct 57 ms 94160 KB n = 3, 3000000000 is a correct answer
13 Correct 56 ms 94196 KB n = 3, 3000000000 is a correct answer
14 Correct 55 ms 94156 KB n = 4, 3000000001 is a correct answer
15 Correct 58 ms 94164 KB n = 4, 4000000000 is a correct answer
16 Correct 59 ms 94164 KB n = 5, 4000000000 is a correct answer
17 Correct 55 ms 94088 KB n = 10, 1000000343 is a correct answer
18 Correct 56 ms 94148 KB n = 10, 3189 is a correct answer
19 Correct 63 ms 94124 KB n = 10, 7000000000 is a correct answer
20 Correct 59 ms 94100 KB n = 5, 12 is a correct answer
21 Correct 54 ms 94148 KB n = 5, 25 is a correct answer
22 Correct 56 ms 94196 KB n = 2, 122 is a correct answer
23 Correct 58 ms 94112 KB n = 10, 117 is a correct answer
24 Correct 58 ms 94148 KB n = 10, 336 is a correct answer
25 Correct 55 ms 94148 KB n = 10, 438 is a correct answer
26 Correct 58 ms 94164 KB n = 10, 206 is a correct answer
27 Correct 57 ms 94104 KB n = 10, 636 is a correct answer
28 Correct 56 ms 94312 KB n = 4, 2399 is a correct answer
29 Correct 64 ms 94196 KB n = 10, 10992 is a correct answer
30 Correct 64 ms 94136 KB n = 10, 3112 is a correct answer
31 Execution timed out 2073 ms 94232 KB Time limit exceeded
32 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 61 ms 94272 KB n = 4, 80 is a correct answer
2 Correct 58 ms 94196 KB n = 9, 110 is a correct answer
3 Correct 56 ms 94100 KB n = 4, 21 is a correct answer
4 Correct 58 ms 94128 KB n = 3, 4 is a correct answer
5 Correct 56 ms 94148 KB n = 2, 62 is a correct answer
6 Correct 55 ms 94212 KB n = 2, 3 is a correct answer
7 Correct 58 ms 94152 KB n = 3, 29 is a correct answer
8 Correct 58 ms 94148 KB n = 2, 3 is a correct answer
9 Correct 58 ms 94200 KB n = 2, 3 is a correct answer
10 Correct 64 ms 94076 KB n = 2, 2000000001 is a correct answer
11 Correct 57 ms 94192 KB n = 2, 3000000000 is a correct answer
12 Correct 57 ms 94160 KB n = 3, 3000000000 is a correct answer
13 Correct 56 ms 94196 KB n = 3, 3000000000 is a correct answer
14 Correct 55 ms 94156 KB n = 4, 3000000001 is a correct answer
15 Correct 58 ms 94164 KB n = 4, 4000000000 is a correct answer
16 Correct 59 ms 94164 KB n = 5, 4000000000 is a correct answer
17 Correct 55 ms 94088 KB n = 10, 1000000343 is a correct answer
18 Correct 56 ms 94148 KB n = 10, 3189 is a correct answer
19 Correct 63 ms 94124 KB n = 10, 7000000000 is a correct answer
20 Correct 59 ms 94100 KB n = 5, 12 is a correct answer
21 Correct 54 ms 94148 KB n = 5, 25 is a correct answer
22 Correct 56 ms 94196 KB n = 2, 122 is a correct answer
23 Correct 58 ms 94112 KB n = 10, 117 is a correct answer
24 Correct 58 ms 94148 KB n = 10, 336 is a correct answer
25 Correct 55 ms 94148 KB n = 10, 438 is a correct answer
26 Correct 58 ms 94164 KB n = 10, 206 is a correct answer
27 Correct 57 ms 94104 KB n = 10, 636 is a correct answer
28 Correct 56 ms 94312 KB n = 4, 2399 is a correct answer
29 Correct 64 ms 94196 KB n = 10, 10992 is a correct answer
30 Correct 64 ms 94136 KB n = 10, 3112 is a correct answer
31 Execution timed out 2073 ms 94232 KB Time limit exceeded
32 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 61 ms 94272 KB n = 4, 80 is a correct answer
2 Correct 58 ms 94196 KB n = 9, 110 is a correct answer
3 Correct 56 ms 94100 KB n = 4, 21 is a correct answer
4 Correct 58 ms 94128 KB n = 3, 4 is a correct answer
5 Correct 56 ms 94148 KB n = 2, 62 is a correct answer
6 Correct 55 ms 94212 KB n = 2, 3 is a correct answer
7 Correct 58 ms 94152 KB n = 3, 29 is a correct answer
8 Correct 58 ms 94148 KB n = 2, 3 is a correct answer
9 Correct 58 ms 94200 KB n = 2, 3 is a correct answer
10 Correct 64 ms 94076 KB n = 2, 2000000001 is a correct answer
11 Correct 57 ms 94192 KB n = 2, 3000000000 is a correct answer
12 Correct 57 ms 94160 KB n = 3, 3000000000 is a correct answer
13 Correct 56 ms 94196 KB n = 3, 3000000000 is a correct answer
14 Correct 55 ms 94156 KB n = 4, 3000000001 is a correct answer
15 Correct 58 ms 94164 KB n = 4, 4000000000 is a correct answer
16 Correct 59 ms 94164 KB n = 5, 4000000000 is a correct answer
17 Correct 55 ms 94088 KB n = 10, 1000000343 is a correct answer
18 Correct 56 ms 94148 KB n = 10, 3189 is a correct answer
19 Correct 63 ms 94124 KB n = 10, 7000000000 is a correct answer
20 Correct 59 ms 94100 KB n = 5, 12 is a correct answer
21 Correct 54 ms 94148 KB n = 5, 25 is a correct answer
22 Correct 56 ms 94196 KB n = 2, 122 is a correct answer
23 Correct 58 ms 94112 KB n = 10, 117 is a correct answer
24 Correct 58 ms 94148 KB n = 10, 336 is a correct answer
25 Correct 55 ms 94148 KB n = 10, 438 is a correct answer
26 Correct 58 ms 94164 KB n = 10, 206 is a correct answer
27 Correct 57 ms 94104 KB n = 10, 636 is a correct answer
28 Correct 56 ms 94312 KB n = 4, 2399 is a correct answer
29 Correct 64 ms 94196 KB n = 10, 10992 is a correct answer
30 Correct 64 ms 94136 KB n = 10, 3112 is a correct answer
31 Execution timed out 2073 ms 94232 KB Time limit exceeded
32 Halted 0 ms 0 KB -