답안 #580698

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
580698 2022-06-21T16:54:45 Z georgievskiy Sky Walking (IOI19_walk) C++14
10 / 100
4000 ms 699080 KB
#pragma GCC optimize("O3")
#pragma GCC optimization("unroll-loops")
#pragma GCC target("avx2")

#include "walk.h"
#include <bits/stdc++.h>
using namespace std;
#define sint signed
#define int long long

#define pii pair<int, int>

int min_distance(std::vector<sint> x, std::vector<sint> h, std::vector<sint> l, std::vector<sint> r, std::vector<sint> y, sint ss, sint gg) {
    int n = x.size(), m = l.size();
    vector<vector<pii>> g;
    vector<vector<pii>> c(n);
    int t = 0;
    for (int j = 0; j < m; j++) {
        int last = -1, lp;
        for (int i = l[j]; i <= r[j]; i++) {
            if (h[i] < y[j])
                continue;
            c[i].push_back({y[j], t++});
            g.push_back(vector<pii>());
            if (last != -1) {
                g[lp].push_back({t - 1, x[i] - x[last]});
                g[t - 1].push_back({lp, x[i] - x[last]});
            }
            last = i, lp = t - 1;
        }
    }

    int s = 0, f = 0;
    g.push_back(vector<pii>());
    g.push_back(vector<pii>());
    for (int i = 0; i < n; i++) {
        if (i == ss) {
            s = t;
            c[i].push_back({0, t++});
        }
        if (i == gg) {
            f = t;
            c[i].push_back({0, t++});
        }
        sort(c[i].begin(), c[i].end());
        for (int j = 0; j < (int)c[i].size() - 1; j++) {
            int v = c[i][j].second, u = c[i][j + 1].second;
            int d = c[i][j + 1].first - c[i][j].first;
            g[v].push_back({u, d});
            g[u].push_back({v, d});
        }
    }

    //for (int i = 0; i < t; i++) {
    //    cout << i << " : " ;
    //    for (pii j : g[i])
    //        cout << "{ " << j.first << ' ' << j.second << " }  ";
    //    cout << '\n';
    //}

    int a = 0;

    priority_queue<pii, vector<pii>, greater<pii>> q;
    const int inf = 2e18;

    vector<int> d(t, inf);
    q.push({0, s});

    while (q.size()) {
        int v = q.top().second, dst = q.top().first;
        q.pop();
        if (d[v] != inf)
            continue;
        d[v] = dst;
        for (auto u : g[v]) {
            if (d[u.first] == inf) {
                q.push({dst + u.second, u.first});
            }
        }
    }

    if (d[f] == inf)
        return -1;
    else
        return d[f];
}

Compilation message

walk.cpp:2: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
    2 | #pragma GCC optimization("unroll-loops")
      | 
walk.cpp: In function 'long long int min_distance(std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>, int, int)':
walk.cpp:61:9: warning: unused variable 'a' [-Wunused-variable]
   61 |     int a = 0;
      |         ^
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 304 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 1 ms 340 KB Output is correct
9 Correct 1 ms 212 KB Output is correct
10 Correct 1 ms 340 KB Output is correct
11 Correct 1 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 1 ms 296 KB Output is correct
14 Correct 1 ms 212 KB Output is correct
15 Correct 1 ms 212 KB Output is correct
16 Correct 1 ms 300 KB Output is correct
17 Correct 1 ms 340 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 732 ms 102216 KB Output is correct
4 Correct 687 ms 106416 KB Output is correct
5 Correct 480 ms 91848 KB Output is correct
6 Correct 947 ms 80892 KB Output is correct
7 Correct 472 ms 91868 KB Output is correct
8 Correct 937 ms 128580 KB Output is correct
9 Correct 520 ms 91956 KB Output is correct
10 Correct 917 ms 147976 KB Output is correct
11 Correct 349 ms 54920 KB Output is correct
12 Correct 197 ms 32340 KB Output is correct
13 Correct 821 ms 131784 KB Output is correct
14 Correct 2859 ms 32024 KB Output is correct
15 Correct 1565 ms 31860 KB Output is correct
16 Correct 245 ms 33788 KB Output is correct
17 Correct 309 ms 32672 KB Output is correct
18 Execution timed out 4050 ms 15300 KB Time limit exceeded
19 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 78 ms 17428 KB Output is correct
2 Execution timed out 4091 ms 699080 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 78 ms 17428 KB Output is correct
2 Execution timed out 4091 ms 699080 KB Time limit exceeded
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 304 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 1 ms 340 KB Output is correct
6 Correct 1 ms 340 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 1 ms 340 KB Output is correct
9 Correct 1 ms 212 KB Output is correct
10 Correct 1 ms 340 KB Output is correct
11 Correct 1 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 1 ms 296 KB Output is correct
14 Correct 1 ms 212 KB Output is correct
15 Correct 1 ms 212 KB Output is correct
16 Correct 1 ms 300 KB Output is correct
17 Correct 1 ms 340 KB Output is correct
18 Correct 1 ms 212 KB Output is correct
19 Correct 1 ms 212 KB Output is correct
20 Correct 732 ms 102216 KB Output is correct
21 Correct 687 ms 106416 KB Output is correct
22 Correct 480 ms 91848 KB Output is correct
23 Correct 947 ms 80892 KB Output is correct
24 Correct 472 ms 91868 KB Output is correct
25 Correct 937 ms 128580 KB Output is correct
26 Correct 520 ms 91956 KB Output is correct
27 Correct 917 ms 147976 KB Output is correct
28 Correct 349 ms 54920 KB Output is correct
29 Correct 197 ms 32340 KB Output is correct
30 Correct 821 ms 131784 KB Output is correct
31 Correct 2859 ms 32024 KB Output is correct
32 Correct 1565 ms 31860 KB Output is correct
33 Correct 245 ms 33788 KB Output is correct
34 Correct 309 ms 32672 KB Output is correct
35 Execution timed out 4050 ms 15300 KB Time limit exceeded
36 Halted 0 ms 0 KB -