Submission #67339966


Source Code Expand

#include <bits/stdc++.h>
using namespace std;

#include <atcoder/all>
using namespace atcoder;

using ll = long long;
using mint = modint998244353;

int main() {
    int H, W, K;
    cin >> H >> W >> K;
    const int INF = 1 << 30;
    vector dp(H, vector<int>(W, INF));
    vector cand(H, vector<vector<int>>(W));
    using T = tuple<int, int, int>;
    priority_queue<T, vector<T>, greater<T>> que;
    vector<pair<int, int>> dir = {
        {0, 1},
        {0, -1},
        {1, 0},
        {-1, 0}
    };
    auto inside = [&](int r, int c) {
        return (0 <= r && r < H && 0 <= c && c < W);
    };
    for(int i = 0; i < K; i++) {
        int r, c;
        cin >> r >> c;
        r--, c--;
        dp[r][c] = 0;
        que.push(T{0, r, c});
    }
    while(!que.empty()) {
        auto [d, r, c] = que.top();
        que.pop();
        if(dp[r][c] != d) continue;
        // cout << "# " << r + 1 << " " << c + 1 << " " << d << endl;
        for(const auto &[dr, dc] : dir) {
            int r2 = r + dr;
            int c2 = c + dc;
            if(inside(r2, c2)) {
                for(int i = 0; i <= cand[r2][c2].size(); i++) {
                    if(i == cand[r2][c2].size() || dp[r][c] < cand[r2][c2][i]) {
                        cand[r2][c2].insert(cand[r2][c2].begin() + i, dp[r][c] + 1);
                        break;
                    }
                }
                // cout << dp[r][c] << endl;
                if(cand[r2][c2].size() >= 2 && dp[r2][c2] > cand[r2][c2][1]) {
                    dp[r2][c2] = cand[r2][c2][1];
                    que.push(T{dp[r2][c2], r2, c2});
                    // cout << "# " << r2 + 1 << " " << c2 + 1 << " " << dp[r2][c2] << endl;
                    // for(int x : cand[r2][c2]) cout << x << " "; cout << endl;
                }
            }
        }
    }
    ll ans = 0;
    for(int i = 0; i < H; i++) {
        for(int j = 0; j < W; j++) {
            if(dp[i][j] < INF) ans += dp[i][j];
            // if(dp[i][j] < INF) cout << dp[i][j] << " ";
            // else cout << ". ";
        }
        // cout << endl;
    }
    cout << ans << endl;
}

Submission Info

Submission Time
Task F - No Passage
User ripity
Language C++ 20 (gcc 12.2)
Score 525
Code Size 2190 Byte
Status AC
Exec Time 2286 ms
Memory 531184 KiB

Compile Error

Main.cpp: In function ‘int main()’:
Main.cpp:43:34: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
   43 |                 for(int i = 0; i <= cand[r2][c2].size(); i++) {
      |                                ~~^~~~~~~~~~~~~~~~~~~~~~
Main.cpp:44:26: warning: comparison of integer expressions of different signedness: ‘int’ and ‘std::vector<int>::size_type’ {aka ‘long unsigned int’} [-Wsign-compare]
   44 |                     if(i == cand[r2][c2].size() || dp[r][c] < cand[r2][c2][i]) {
      |                        ~~^~~~~~~~~~~~~~~~~~~~~~

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 525 / 525
Status
AC × 3
AC × 44
Set Name Test Cases
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_test_00.txt, 01_test_01.txt, 01_test_02.txt, 01_test_03.txt, 01_test_04.txt, 01_test_05.txt, 01_test_06.txt, 01_test_07.txt, 01_test_08.txt, 01_test_09.txt, 01_test_10.txt, 01_test_11.txt, 01_test_12.txt, 01_test_13.txt, 01_test_14.txt, 01_test_15.txt, 01_test_16.txt, 01_test_17.txt, 01_test_18.txt, 01_test_19.txt, 01_test_20.txt, 01_test_21.txt, 01_test_22.txt, 01_test_23.txt, 01_test_24.txt, 01_test_25.txt, 01_test_26.txt, 01_test_27.txt, 01_test_28.txt, 01_test_29.txt, 01_test_30.txt, 01_test_31.txt, 01_test_32.txt, 01_test_33.txt, 01_test_34.txt, 01_test_35.txt, 01_test_36.txt, 01_test_37.txt, 01_test_38.txt, 01_test_39.txt, 01_test_40.txt
Case Name Status Exec Time Memory
00_sample_00.txt AC 1 ms 3608 KiB
00_sample_01.txt AC 1 ms 3412 KiB
00_sample_02.txt AC 1 ms 3580 KiB
01_test_00.txt AC 1 ms 3504 KiB
01_test_01.txt AC 1 ms 3612 KiB
01_test_02.txt AC 1 ms 3604 KiB
01_test_03.txt AC 1 ms 3648 KiB
01_test_04.txt AC 2 ms 3740 KiB
01_test_05.txt AC 1 ms 3508 KiB
01_test_06.txt AC 2 ms 3828 KiB
01_test_07.txt AC 1 ms 3564 KiB
01_test_08.txt AC 2 ms 3720 KiB
01_test_09.txt AC 3 ms 3892 KiB
01_test_10.txt AC 11 ms 13732 KiB
01_test_11.txt AC 8 ms 8996 KiB
01_test_12.txt AC 4 ms 4104 KiB
01_test_13.txt AC 6 ms 6664 KiB
01_test_14.txt AC 15 ms 21836 KiB
01_test_15.txt AC 8 ms 9712 KiB
01_test_16.txt AC 5 ms 6524 KiB
01_test_17.txt AC 16 ms 27428 KiB
01_test_18.txt AC 29 ms 48912 KiB
01_test_19.txt AC 22 ms 36284 KiB
01_test_20.txt AC 74 ms 146884 KiB
01_test_21.txt AC 12 ms 18904 KiB
01_test_22.txt AC 127 ms 42408 KiB
01_test_23.txt AC 524 ms 167628 KiB
01_test_24.txt AC 1168 ms 319584 KiB
01_test_25.txt AC 2021 ms 505644 KiB
01_test_26.txt AC 127 ms 250724 KiB
01_test_27.txt AC 125 ms 250464 KiB
01_test_28.txt AC 123 ms 250308 KiB
01_test_29.txt AC 125 ms 250476 KiB
01_test_30.txt AC 3 ms 4104 KiB
01_test_31.txt AC 136 ms 45560 KiB
01_test_32.txt AC 435 ms 263692 KiB
01_test_33.txt AC 534 ms 307932 KiB
01_test_34.txt AC 2286 ms 531156 KiB
01_test_35.txt AC 2247 ms 531184 KiB
01_test_36.txt AC 1 ms 3528 KiB
01_test_37.txt AC 1 ms 3528 KiB
01_test_38.txt AC 2 ms 3748 KiB
01_test_39.txt AC 120 ms 249420 KiB
01_test_40.txt AC 1 ms 3528 KiB