답안 #400520

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
400520 2021-05-08T08:59:13 Z Falcon Jakarta Skyscrapers (APIO15_skyscraper) C++17
36 / 100
1000 ms 844 KB
#pragma GCC optimize("O2")

#include <bits/stdc++.h>

#ifdef DEBUG
#include "debug.hpp"
#endif

using namespace std;

#define all(c)              (c).begin(), (c).end()
#define rall(c)             (c).rbegin(), (c).rend()
#define traverse(c, it)     for(auto it = (c).begin(); it != (c).end(); ++it)
#define rep(i, N)           for(int i = 0; i < (N); ++i)
#define rrep(i, N)          for(int i = (N) - 1; i >= 0; --i)
#define rep1(i, N)          for(int i = 1; i <= (N); ++i)
#define rep2(i, s, e)       for(int i = (s); i <= (e); ++i)
#define rep3(i, s, e, d)    for(int i = (s); (d) >= 0 ? i <= (e) : i >= (e); i += (d))

#ifdef DEBUG
#define debug(x...)         { \
                            ++dbg::depth; \
                            string dbg_vals = dbg::to_string(x); \
                            --dbg::depth; \
                            dbg::fprint(__func__, __LINE__, #x, dbg_vals); \
                            }

#define light_debug(x)      { \
                            dbg::light = true; \
                            dbg::dout << __func__ << ":" << __LINE__; \
                            dbg::dout << "  " << #x << " = " << x << endl; \
                            dbg::light = false; \
                            }
#else
#define debug(x...)         42
#define light_debug(x)      42
#endif


using ll = long long;

template<typename T>
inline T& ckmin(T& a, T b) { return a = a > b ? b : a; }

template<typename T>
inline T& ckmax(T& a, T b) { return a = a < b ? b : a; }


int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    #ifdef DEBUG
    freopen("debug", "w", stderr);
    #endif

    int N, M; cin >> N >> M;
    vector<int> P(M), B(M);
    rep(i, M) cin >> B[i] >> P[i];
    vector<vector<int>> B_t(N);
    rep(i, M) B_t[B[i]].push_back(i);

    vector<int> dist(M, -1); dist[0] = 0;
    vector<bool> vis(M);
    

    while(!vis[1]) {
        int u = -1;
        rep(i, M)
            if(!vis[i] && dist[i] != -1 && (u == -1 || dist[i] < dist[u]))
                u = i;

        debug(u);
        if(u == -1) break;

        int d = dist[u];
        vis[u] = true;
        for(int p = B[u] % P[u]; p < N; p += P[u]) {
            for(int v : B_t[p]) {
                int dv = d + abs(p - B[u]) / P[u];
                if(!vis[v] && (dist[v] == -1 || dist[v] > dv))
                    dist[v] = d + abs(p - B[u]) / P[u];
            }
        }
    }

    
    cout << (vis[1] ? dist[1] : -1) << '\n';

    #ifdef DEBUG
    dbg::dout << "\nExecution time: " << clock() * 1000 / CLOCKS_PER_SEC  << "ms" << endl;
    #endif

    return 0;
}


Compilation message

skyscraper.cpp: In function 'int main()':
skyscraper.cpp:35:29: warning: statement has no effect [-Wunused-value]
   35 | #define debug(x...)         42
      |                             ^~
skyscraper.cpp:73:9: note: in expansion of macro 'debug'
   73 |         debug(u);
      |         ^~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 204 KB Output is correct
5 Correct 1 ms 204 KB Output is correct
6 Correct 1 ms 204 KB Output is correct
7 Correct 1 ms 204 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 208 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 204 KB Output is correct
5 Correct 1 ms 204 KB Output is correct
6 Correct 1 ms 204 KB Output is correct
7 Correct 1 ms 320 KB Output is correct
8 Correct 1 ms 204 KB Output is correct
9 Correct 1 ms 316 KB Output is correct
10 Correct 1 ms 332 KB Output is correct
11 Correct 1 ms 320 KB Output is correct
12 Correct 1 ms 332 KB Output is correct
13 Correct 22 ms 332 KB Output is correct
14 Correct 10 ms 332 KB Output is correct
15 Correct 12 ms 332 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 204 KB Output is correct
5 Correct 1 ms 204 KB Output is correct
6 Correct 1 ms 204 KB Output is correct
7 Correct 1 ms 316 KB Output is correct
8 Correct 1 ms 204 KB Output is correct
9 Correct 1 ms 204 KB Output is correct
10 Correct 1 ms 332 KB Output is correct
11 Correct 2 ms 332 KB Output is correct
12 Correct 1 ms 332 KB Output is correct
13 Correct 23 ms 332 KB Output is correct
14 Correct 10 ms 316 KB Output is correct
15 Correct 12 ms 332 KB Output is correct
16 Correct 1 ms 336 KB Output is correct
17 Correct 6 ms 336 KB Output is correct
18 Correct 1 ms 332 KB Output is correct
19 Correct 1 ms 332 KB Output is correct
20 Correct 29 ms 332 KB Output is correct
21 Correct 1 ms 332 KB Output is correct
22 Correct 1 ms 316 KB Output is correct
23 Correct 3 ms 332 KB Output is correct
24 Correct 8 ms 332 KB Output is correct
25 Correct 3 ms 332 KB Output is correct
26 Correct 2 ms 332 KB Output is correct
27 Correct 2 ms 332 KB Output is correct
28 Correct 9 ms 332 KB Output is correct
29 Correct 2 ms 332 KB Output is correct
30 Correct 1 ms 332 KB Output is correct
31 Correct 2 ms 332 KB Output is correct
32 Correct 2 ms 332 KB Output is correct
33 Correct 11 ms 332 KB Output is correct
34 Correct 11 ms 408 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 288 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 204 KB Output is correct
5 Correct 1 ms 208 KB Output is correct
6 Correct 1 ms 204 KB Output is correct
7 Correct 1 ms 204 KB Output is correct
8 Correct 1 ms 204 KB Output is correct
9 Correct 1 ms 208 KB Output is correct
10 Correct 2 ms 312 KB Output is correct
11 Correct 1 ms 320 KB Output is correct
12 Correct 1 ms 336 KB Output is correct
13 Correct 23 ms 368 KB Output is correct
14 Correct 10 ms 312 KB Output is correct
15 Correct 10 ms 336 KB Output is correct
16 Correct 1 ms 332 KB Output is correct
17 Correct 6 ms 388 KB Output is correct
18 Correct 1 ms 332 KB Output is correct
19 Correct 1 ms 284 KB Output is correct
20 Correct 30 ms 332 KB Output is correct
21 Correct 1 ms 332 KB Output is correct
22 Correct 1 ms 332 KB Output is correct
23 Correct 3 ms 332 KB Output is correct
24 Correct 9 ms 332 KB Output is correct
25 Correct 4 ms 332 KB Output is correct
26 Correct 2 ms 324 KB Output is correct
27 Correct 2 ms 332 KB Output is correct
28 Correct 9 ms 332 KB Output is correct
29 Correct 2 ms 332 KB Output is correct
30 Correct 1 ms 332 KB Output is correct
31 Correct 2 ms 332 KB Output is correct
32 Correct 2 ms 332 KB Output is correct
33 Correct 10 ms 332 KB Output is correct
34 Correct 10 ms 332 KB Output is correct
35 Execution timed out 1094 ms 844 KB Time limit exceeded
36 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 204 KB Output is correct
2 Correct 1 ms 204 KB Output is correct
3 Correct 1 ms 204 KB Output is correct
4 Correct 1 ms 204 KB Output is correct
5 Correct 1 ms 204 KB Output is correct
6 Correct 1 ms 204 KB Output is correct
7 Correct 1 ms 204 KB Output is correct
8 Correct 1 ms 204 KB Output is correct
9 Correct 1 ms 204 KB Output is correct
10 Correct 1 ms 204 KB Output is correct
11 Correct 1 ms 332 KB Output is correct
12 Correct 1 ms 332 KB Output is correct
13 Correct 23 ms 360 KB Output is correct
14 Correct 10 ms 332 KB Output is correct
15 Correct 10 ms 332 KB Output is correct
16 Correct 1 ms 332 KB Output is correct
17 Correct 6 ms 332 KB Output is correct
18 Correct 1 ms 332 KB Output is correct
19 Correct 1 ms 332 KB Output is correct
20 Correct 34 ms 460 KB Output is correct
21 Correct 1 ms 332 KB Output is correct
22 Correct 1 ms 332 KB Output is correct
23 Correct 3 ms 332 KB Output is correct
24 Correct 8 ms 332 KB Output is correct
25 Correct 3 ms 332 KB Output is correct
26 Correct 1 ms 332 KB Output is correct
27 Correct 2 ms 332 KB Output is correct
28 Correct 9 ms 332 KB Output is correct
29 Correct 2 ms 332 KB Output is correct
30 Correct 1 ms 332 KB Output is correct
31 Correct 2 ms 332 KB Output is correct
32 Correct 2 ms 332 KB Output is correct
33 Correct 10 ms 332 KB Output is correct
34 Correct 10 ms 332 KB Output is correct
35 Execution timed out 1096 ms 844 KB Time limit exceeded
36 Halted 0 ms 0 KB -