답안 #322252

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
322252 2020-11-14T10:31:23 Z tjdgus4384 물탱크 (KOI18_watertank) C++14
6 / 100
269 ms 104556 KB
#include<bits/stdc++.h>
using namespace std;
int N, M, H, t, d[1010][1010], ans;
vector<pair<pair<int, int>, int> > v[1010][1010];
priority_queue<pair<int, pair<int, int> >, vector<pair<int, pair<int, int> > >, greater<pair<int, pair<int, int> > > > q;

int main(){
    scanf("%d %d %d", &N, &M, &H);
    for(int i = 0;i < N;i++){
        for(int j = 0;j < M;j++){
            d[i][j] = H;
        }
    }
    for(int i = 0;i < N+1;i++){
        for(int j = 0;j < M;j++){
            scanf("%d", &t);
            if(t == -1) continue;
            if(i == 0 && t < d[0][j]){
                q.push({t, {0, j}});
                d[0][j] = t;
            }
            else if(i == N && t < d[N-1][j]){
                q.push({t, {N-1, j}});
                d[N-1][j] = t;
            }
            else{
                v[i-1][j].push_back({{i, j}, t});
                v[i][j].push_back({{i-1, j}, t});
            }
        }
    }
    for(int i = 0;i < N;i++){
        for(int j = 0;j < M+1;j++){
            scanf("%d", &t);
            if(t == -1) continue;
            if(j == 0 && t < d[i][0]){
                q.push({t, {i, 0}});
                d[i][0] = t;
            }
            else if(j == M && t < d[i][M-1]){
                q.push({t, {i, M-1}});
                d[i][M-1] = t;
            }
            else{
                v[i][j-1].push_back({{i, j}, t});
                v[i][j].push_back({{i, j-1}, t});
            }
        }
    }

    while(!q.empty()){
        int q1 = q.top().first;
        int qx = q.top().second.first;
        int qy = q.top().second.second;
        q.pop();
        for(int i = 0;i < v[qx][qy].size();i++){
            int nx = v[qx][qy][i].first.first;
            int ny = v[qx][qy][i].first.second;
            if(d[nx][ny] > max(q1, v[qx][qy][i].second)){
                d[nx][ny] = max(q1, v[qx][qy][i].second);
                q.push({d[nx][ny], {nx, ny}});
            }
        }
    }

    for(int i = 0;i < N;i++){
        for(int j = 0;j < M;j++){
            ans += d[i][j];
        }
    }
    printf("%d", ans);
    return 0;
}

Compilation message

watertank.cpp: In function 'int main()':
watertank.cpp:56:25: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<std::pair<std::pair<int, int>, int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   56 |         for(int i = 0;i < v[qx][qy].size();i++){
      |                       ~~^~~~~~~~~~~~~~~~~~
watertank.cpp:8:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
    8 |     scanf("%d %d %d", &N, &M, &H);
      |     ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
watertank.cpp:16:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   16 |             scanf("%d", &t);
      |             ~~~~~^~~~~~~~~~
watertank.cpp:34:18: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   34 |             scanf("%d", &t);
      |             ~~~~~^~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 18 ms 24448 KB Output is correct
2 Correct 15 ms 24300 KB Output is correct
3 Correct 15 ms 24428 KB Output is correct
4 Correct 16 ms 24300 KB Output is correct
5 Correct 15 ms 24300 KB Output is correct
6 Correct 15 ms 24300 KB Output is correct
7 Correct 15 ms 24300 KB Output is correct
8 Correct 15 ms 24300 KB Output is correct
9 Correct 16 ms 24428 KB Output is correct
10 Correct 16 ms 24300 KB Output is correct
11 Correct 15 ms 24300 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 16 ms 24300 KB Output is correct
2 Runtime error 43 ms 49004 KB Execution killed with signal 6 (could be triggered by violating memory limits)
3 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 200 ms 28396 KB Output is correct
2 Correct 16 ms 24300 KB Output is correct
3 Correct 210 ms 32152 KB Output is correct
4 Correct 269 ms 49900 KB Output is correct
5 Correct 15 ms 24320 KB Output is correct
6 Runtime error 240 ms 104556 KB Execution killed with signal 6 (could be triggered by violating memory limits)
7 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 17 ms 24684 KB Output is correct
2 Correct 15 ms 24300 KB Output is correct
3 Correct 14 ms 24300 KB Output is correct
4 Correct 15 ms 24300 KB Output is correct
5 Correct 15 ms 24300 KB Output is correct
6 Correct 15 ms 24300 KB Output is correct
7 Correct 16 ms 24556 KB Output is correct
8 Correct 17 ms 24556 KB Output is correct
9 Correct 16 ms 24300 KB Output is correct
10 Correct 16 ms 24428 KB Output is correct
11 Correct 16 ms 24556 KB Output is correct
12 Correct 15 ms 24300 KB Output is correct
13 Correct 16 ms 24556 KB Output is correct
14 Correct 15 ms 24300 KB Output is correct
15 Correct 15 ms 24300 KB Output is correct
16 Runtime error 46 ms 49584 KB Execution killed with signal 6 (could be triggered by violating memory limits)
17 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 17 ms 24716 KB Output is correct
2 Correct 14 ms 24300 KB Output is correct
3 Runtime error 43 ms 49004 KB Execution killed with signal 6 (could be triggered by violating memory limits)
4 Halted 0 ms 0 KB -