답안 #589813

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
589813 2022-07-05T10:02:20 Z Sam_a17 Shortcut (IOI16_shortcut) C++14
0 / 100
2000 ms 596 KB
#define _CRT_SECURE_NO_WARNINGS
#include <bits/stdc++.h>
// #include "shortcut_c.h"
#include <cstdio>
using namespace std;
#define ll long long

const int N = 6e3 + 10;
const ll inf = 1e16;
multiset<pair<ll, long long>> adj[N];
int ni;

pair<long long, long long> djik(int node) {
  vector<bool> used(ni + 1);
  vector<long long> dist(ni + 1, inf);
  priority_queue<pair<ll, ll>, vector<pair<ll, ll>> , greater<pair<ll, ll>> > q;
  dist[node] = 0;
  q.push({0, node});
 
  while(!q.empty()) {
    auto u = q.top();
    q.pop();

    if(used[u.second]) {
      continue;
    }
    used[u.second] = true;

    for(auto i: adj[u.second]) {
      if(dist[i.first] > dist[u.second] + i.second) {
        dist[i.first] = dist[u.second] + i.second;
        q.push({dist[i.first], i.first});
      }
    }
  }

  pair<ll, ll> answ = {-1, -1};

  for(int i = 0; i < ni; i++) {
    if(dist[i] == inf) {
      assert(false);
    }

    if(dist[i] > answ.first) {
      answ = {dist[i], i};
    }
  }

  return answ;
}

long long find_shortcut(int n, std::vector<int> l, std::vector<int> d, int c) {
  ni = n;

  if(d[0]) {
    adj[0].insert({ni, d[0]});
    adj[ni++].insert({0, d[0]});
  }

  for(int i = 1; i < n; i++) {

    adj[i - 1].insert({i, l[i - 1]});
    adj[i].insert({i - 1, l[i - 1]});

    if(d[i]) {
      adj[i].insert({ni, d[i]});
      adj[ni++].insert({i, d[i]});
    }
  }

  long long minDiametr = INT64_MAX;
  for(int i = 0; i < n; i++) {
    for(int j = i + 1; j < n; j++) {
      adj[i].insert({j, (long long)c});
      adj[j].insert({i, (long long)c});

      long long maxi = INT64_MIN;
      for(int k = 0; k < ni; k++) {
        maxi = max(maxi, djik(k).first);
      }

      minDiametr = min(maxi, minDiametr);

      adj[i].erase(adj[i].find(make_pair(j, (ll)c)));
      adj[j].erase(adj[j].find(make_pair(i, (ll)c)));
    }
  }

  return minDiametr;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 468 KB n = 4, 80 is a correct answer
2 Correct 1 ms 468 KB n = 9, 110 is a correct answer
3 Correct 1 ms 468 KB n = 4, 21 is a correct answer
4 Correct 1 ms 468 KB n = 3, 4 is a correct answer
5 Correct 1 ms 468 KB n = 2, 62 is a correct answer
6 Correct 1 ms 468 KB n = 2, 3 is a correct answer
7 Correct 1 ms 468 KB n = 3, 29 is a correct answer
8 Correct 1 ms 468 KB n = 2, 3 is a correct answer
9 Correct 0 ms 468 KB n = 2, 3 is a correct answer
10 Correct 1 ms 468 KB n = 2, 2000000001 is a correct answer
11 Correct 1 ms 468 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 468 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 468 KB n = 3, 3000000000 is a correct answer
14 Correct 1 ms 468 KB n = 4, 3000000001 is a correct answer
15 Correct 1 ms 468 KB n = 4, 4000000000 is a correct answer
16 Correct 1 ms 468 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 468 KB n = 10, 1000000343 is a correct answer
18 Correct 2 ms 468 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 468 KB n = 10, 7000000000 is a correct answer
20 Correct 1 ms 468 KB n = 5, 12 is a correct answer
21 Correct 1 ms 468 KB n = 5, 25 is a correct answer
22 Correct 1 ms 468 KB n = 2, 122 is a correct answer
23 Correct 2 ms 596 KB n = 10, 117 is a correct answer
24 Correct 2 ms 468 KB n = 10, 336 is a correct answer
25 Correct 2 ms 596 KB n = 10, 438 is a correct answer
26 Correct 1 ms 468 KB n = 10, 206 is a correct answer
27 Correct 1 ms 468 KB n = 10, 636 is a correct answer
28 Correct 1 ms 468 KB n = 4, 2399 is a correct answer
29 Correct 2 ms 468 KB n = 10, 10992 is a correct answer
30 Correct 2 ms 468 KB n = 10, 3112 is a correct answer
31 Execution timed out 2089 ms 596 KB Time limit exceeded
32 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 468 KB n = 4, 80 is a correct answer
2 Correct 1 ms 468 KB n = 9, 110 is a correct answer
3 Correct 1 ms 468 KB n = 4, 21 is a correct answer
4 Correct 1 ms 468 KB n = 3, 4 is a correct answer
5 Correct 1 ms 468 KB n = 2, 62 is a correct answer
6 Correct 1 ms 468 KB n = 2, 3 is a correct answer
7 Correct 1 ms 468 KB n = 3, 29 is a correct answer
8 Correct 1 ms 468 KB n = 2, 3 is a correct answer
9 Correct 0 ms 468 KB n = 2, 3 is a correct answer
10 Correct 1 ms 468 KB n = 2, 2000000001 is a correct answer
11 Correct 1 ms 468 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 468 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 468 KB n = 3, 3000000000 is a correct answer
14 Correct 1 ms 468 KB n = 4, 3000000001 is a correct answer
15 Correct 1 ms 468 KB n = 4, 4000000000 is a correct answer
16 Correct 1 ms 468 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 468 KB n = 10, 1000000343 is a correct answer
18 Correct 2 ms 468 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 468 KB n = 10, 7000000000 is a correct answer
20 Correct 1 ms 468 KB n = 5, 12 is a correct answer
21 Correct 1 ms 468 KB n = 5, 25 is a correct answer
22 Correct 1 ms 468 KB n = 2, 122 is a correct answer
23 Correct 2 ms 596 KB n = 10, 117 is a correct answer
24 Correct 2 ms 468 KB n = 10, 336 is a correct answer
25 Correct 2 ms 596 KB n = 10, 438 is a correct answer
26 Correct 1 ms 468 KB n = 10, 206 is a correct answer
27 Correct 1 ms 468 KB n = 10, 636 is a correct answer
28 Correct 1 ms 468 KB n = 4, 2399 is a correct answer
29 Correct 2 ms 468 KB n = 10, 10992 is a correct answer
30 Correct 2 ms 468 KB n = 10, 3112 is a correct answer
31 Execution timed out 2089 ms 596 KB Time limit exceeded
32 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 468 KB n = 4, 80 is a correct answer
2 Correct 1 ms 468 KB n = 9, 110 is a correct answer
3 Correct 1 ms 468 KB n = 4, 21 is a correct answer
4 Correct 1 ms 468 KB n = 3, 4 is a correct answer
5 Correct 1 ms 468 KB n = 2, 62 is a correct answer
6 Correct 1 ms 468 KB n = 2, 3 is a correct answer
7 Correct 1 ms 468 KB n = 3, 29 is a correct answer
8 Correct 1 ms 468 KB n = 2, 3 is a correct answer
9 Correct 0 ms 468 KB n = 2, 3 is a correct answer
10 Correct 1 ms 468 KB n = 2, 2000000001 is a correct answer
11 Correct 1 ms 468 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 468 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 468 KB n = 3, 3000000000 is a correct answer
14 Correct 1 ms 468 KB n = 4, 3000000001 is a correct answer
15 Correct 1 ms 468 KB n = 4, 4000000000 is a correct answer
16 Correct 1 ms 468 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 468 KB n = 10, 1000000343 is a correct answer
18 Correct 2 ms 468 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 468 KB n = 10, 7000000000 is a correct answer
20 Correct 1 ms 468 KB n = 5, 12 is a correct answer
21 Correct 1 ms 468 KB n = 5, 25 is a correct answer
22 Correct 1 ms 468 KB n = 2, 122 is a correct answer
23 Correct 2 ms 596 KB n = 10, 117 is a correct answer
24 Correct 2 ms 468 KB n = 10, 336 is a correct answer
25 Correct 2 ms 596 KB n = 10, 438 is a correct answer
26 Correct 1 ms 468 KB n = 10, 206 is a correct answer
27 Correct 1 ms 468 KB n = 10, 636 is a correct answer
28 Correct 1 ms 468 KB n = 4, 2399 is a correct answer
29 Correct 2 ms 468 KB n = 10, 10992 is a correct answer
30 Correct 2 ms 468 KB n = 10, 3112 is a correct answer
31 Execution timed out 2089 ms 596 KB Time limit exceeded
32 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 468 KB n = 4, 80 is a correct answer
2 Correct 1 ms 468 KB n = 9, 110 is a correct answer
3 Correct 1 ms 468 KB n = 4, 21 is a correct answer
4 Correct 1 ms 468 KB n = 3, 4 is a correct answer
5 Correct 1 ms 468 KB n = 2, 62 is a correct answer
6 Correct 1 ms 468 KB n = 2, 3 is a correct answer
7 Correct 1 ms 468 KB n = 3, 29 is a correct answer
8 Correct 1 ms 468 KB n = 2, 3 is a correct answer
9 Correct 0 ms 468 KB n = 2, 3 is a correct answer
10 Correct 1 ms 468 KB n = 2, 2000000001 is a correct answer
11 Correct 1 ms 468 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 468 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 468 KB n = 3, 3000000000 is a correct answer
14 Correct 1 ms 468 KB n = 4, 3000000001 is a correct answer
15 Correct 1 ms 468 KB n = 4, 4000000000 is a correct answer
16 Correct 1 ms 468 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 468 KB n = 10, 1000000343 is a correct answer
18 Correct 2 ms 468 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 468 KB n = 10, 7000000000 is a correct answer
20 Correct 1 ms 468 KB n = 5, 12 is a correct answer
21 Correct 1 ms 468 KB n = 5, 25 is a correct answer
22 Correct 1 ms 468 KB n = 2, 122 is a correct answer
23 Correct 2 ms 596 KB n = 10, 117 is a correct answer
24 Correct 2 ms 468 KB n = 10, 336 is a correct answer
25 Correct 2 ms 596 KB n = 10, 438 is a correct answer
26 Correct 1 ms 468 KB n = 10, 206 is a correct answer
27 Correct 1 ms 468 KB n = 10, 636 is a correct answer
28 Correct 1 ms 468 KB n = 4, 2399 is a correct answer
29 Correct 2 ms 468 KB n = 10, 10992 is a correct answer
30 Correct 2 ms 468 KB n = 10, 3112 is a correct answer
31 Execution timed out 2089 ms 596 KB Time limit exceeded
32 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 468 KB n = 4, 80 is a correct answer
2 Correct 1 ms 468 KB n = 9, 110 is a correct answer
3 Correct 1 ms 468 KB n = 4, 21 is a correct answer
4 Correct 1 ms 468 KB n = 3, 4 is a correct answer
5 Correct 1 ms 468 KB n = 2, 62 is a correct answer
6 Correct 1 ms 468 KB n = 2, 3 is a correct answer
7 Correct 1 ms 468 KB n = 3, 29 is a correct answer
8 Correct 1 ms 468 KB n = 2, 3 is a correct answer
9 Correct 0 ms 468 KB n = 2, 3 is a correct answer
10 Correct 1 ms 468 KB n = 2, 2000000001 is a correct answer
11 Correct 1 ms 468 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 468 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 468 KB n = 3, 3000000000 is a correct answer
14 Correct 1 ms 468 KB n = 4, 3000000001 is a correct answer
15 Correct 1 ms 468 KB n = 4, 4000000000 is a correct answer
16 Correct 1 ms 468 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 468 KB n = 10, 1000000343 is a correct answer
18 Correct 2 ms 468 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 468 KB n = 10, 7000000000 is a correct answer
20 Correct 1 ms 468 KB n = 5, 12 is a correct answer
21 Correct 1 ms 468 KB n = 5, 25 is a correct answer
22 Correct 1 ms 468 KB n = 2, 122 is a correct answer
23 Correct 2 ms 596 KB n = 10, 117 is a correct answer
24 Correct 2 ms 468 KB n = 10, 336 is a correct answer
25 Correct 2 ms 596 KB n = 10, 438 is a correct answer
26 Correct 1 ms 468 KB n = 10, 206 is a correct answer
27 Correct 1 ms 468 KB n = 10, 636 is a correct answer
28 Correct 1 ms 468 KB n = 4, 2399 is a correct answer
29 Correct 2 ms 468 KB n = 10, 10992 is a correct answer
30 Correct 2 ms 468 KB n = 10, 3112 is a correct answer
31 Execution timed out 2089 ms 596 KB Time limit exceeded
32 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 468 KB n = 4, 80 is a correct answer
2 Correct 1 ms 468 KB n = 9, 110 is a correct answer
3 Correct 1 ms 468 KB n = 4, 21 is a correct answer
4 Correct 1 ms 468 KB n = 3, 4 is a correct answer
5 Correct 1 ms 468 KB n = 2, 62 is a correct answer
6 Correct 1 ms 468 KB n = 2, 3 is a correct answer
7 Correct 1 ms 468 KB n = 3, 29 is a correct answer
8 Correct 1 ms 468 KB n = 2, 3 is a correct answer
9 Correct 0 ms 468 KB n = 2, 3 is a correct answer
10 Correct 1 ms 468 KB n = 2, 2000000001 is a correct answer
11 Correct 1 ms 468 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 468 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 468 KB n = 3, 3000000000 is a correct answer
14 Correct 1 ms 468 KB n = 4, 3000000001 is a correct answer
15 Correct 1 ms 468 KB n = 4, 4000000000 is a correct answer
16 Correct 1 ms 468 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 468 KB n = 10, 1000000343 is a correct answer
18 Correct 2 ms 468 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 468 KB n = 10, 7000000000 is a correct answer
20 Correct 1 ms 468 KB n = 5, 12 is a correct answer
21 Correct 1 ms 468 KB n = 5, 25 is a correct answer
22 Correct 1 ms 468 KB n = 2, 122 is a correct answer
23 Correct 2 ms 596 KB n = 10, 117 is a correct answer
24 Correct 2 ms 468 KB n = 10, 336 is a correct answer
25 Correct 2 ms 596 KB n = 10, 438 is a correct answer
26 Correct 1 ms 468 KB n = 10, 206 is a correct answer
27 Correct 1 ms 468 KB n = 10, 636 is a correct answer
28 Correct 1 ms 468 KB n = 4, 2399 is a correct answer
29 Correct 2 ms 468 KB n = 10, 10992 is a correct answer
30 Correct 2 ms 468 KB n = 10, 3112 is a correct answer
31 Execution timed out 2089 ms 596 KB Time limit exceeded
32 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 468 KB n = 4, 80 is a correct answer
2 Correct 1 ms 468 KB n = 9, 110 is a correct answer
3 Correct 1 ms 468 KB n = 4, 21 is a correct answer
4 Correct 1 ms 468 KB n = 3, 4 is a correct answer
5 Correct 1 ms 468 KB n = 2, 62 is a correct answer
6 Correct 1 ms 468 KB n = 2, 3 is a correct answer
7 Correct 1 ms 468 KB n = 3, 29 is a correct answer
8 Correct 1 ms 468 KB n = 2, 3 is a correct answer
9 Correct 0 ms 468 KB n = 2, 3 is a correct answer
10 Correct 1 ms 468 KB n = 2, 2000000001 is a correct answer
11 Correct 1 ms 468 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 468 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 468 KB n = 3, 3000000000 is a correct answer
14 Correct 1 ms 468 KB n = 4, 3000000001 is a correct answer
15 Correct 1 ms 468 KB n = 4, 4000000000 is a correct answer
16 Correct 1 ms 468 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 468 KB n = 10, 1000000343 is a correct answer
18 Correct 2 ms 468 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 468 KB n = 10, 7000000000 is a correct answer
20 Correct 1 ms 468 KB n = 5, 12 is a correct answer
21 Correct 1 ms 468 KB n = 5, 25 is a correct answer
22 Correct 1 ms 468 KB n = 2, 122 is a correct answer
23 Correct 2 ms 596 KB n = 10, 117 is a correct answer
24 Correct 2 ms 468 KB n = 10, 336 is a correct answer
25 Correct 2 ms 596 KB n = 10, 438 is a correct answer
26 Correct 1 ms 468 KB n = 10, 206 is a correct answer
27 Correct 1 ms 468 KB n = 10, 636 is a correct answer
28 Correct 1 ms 468 KB n = 4, 2399 is a correct answer
29 Correct 2 ms 468 KB n = 10, 10992 is a correct answer
30 Correct 2 ms 468 KB n = 10, 3112 is a correct answer
31 Execution timed out 2089 ms 596 KB Time limit exceeded
32 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 468 KB n = 4, 80 is a correct answer
2 Correct 1 ms 468 KB n = 9, 110 is a correct answer
3 Correct 1 ms 468 KB n = 4, 21 is a correct answer
4 Correct 1 ms 468 KB n = 3, 4 is a correct answer
5 Correct 1 ms 468 KB n = 2, 62 is a correct answer
6 Correct 1 ms 468 KB n = 2, 3 is a correct answer
7 Correct 1 ms 468 KB n = 3, 29 is a correct answer
8 Correct 1 ms 468 KB n = 2, 3 is a correct answer
9 Correct 0 ms 468 KB n = 2, 3 is a correct answer
10 Correct 1 ms 468 KB n = 2, 2000000001 is a correct answer
11 Correct 1 ms 468 KB n = 2, 3000000000 is a correct answer
12 Correct 1 ms 468 KB n = 3, 3000000000 is a correct answer
13 Correct 0 ms 468 KB n = 3, 3000000000 is a correct answer
14 Correct 1 ms 468 KB n = 4, 3000000001 is a correct answer
15 Correct 1 ms 468 KB n = 4, 4000000000 is a correct answer
16 Correct 1 ms 468 KB n = 5, 4000000000 is a correct answer
17 Correct 1 ms 468 KB n = 10, 1000000343 is a correct answer
18 Correct 2 ms 468 KB n = 10, 3189 is a correct answer
19 Correct 1 ms 468 KB n = 10, 7000000000 is a correct answer
20 Correct 1 ms 468 KB n = 5, 12 is a correct answer
21 Correct 1 ms 468 KB n = 5, 25 is a correct answer
22 Correct 1 ms 468 KB n = 2, 122 is a correct answer
23 Correct 2 ms 596 KB n = 10, 117 is a correct answer
24 Correct 2 ms 468 KB n = 10, 336 is a correct answer
25 Correct 2 ms 596 KB n = 10, 438 is a correct answer
26 Correct 1 ms 468 KB n = 10, 206 is a correct answer
27 Correct 1 ms 468 KB n = 10, 636 is a correct answer
28 Correct 1 ms 468 KB n = 4, 2399 is a correct answer
29 Correct 2 ms 468 KB n = 10, 10992 is a correct answer
30 Correct 2 ms 468 KB n = 10, 3112 is a correct answer
31 Execution timed out 2089 ms 596 KB Time limit exceeded
32 Halted 0 ms 0 KB -