Submission details
Task:Thin Ice
Sender:Jonni Haapiainen
Submission time:2024-03-06 19:04:22 +0200
Language:C++ (C++20)
Status:READY
Result:0
Feedback
subtaskverdictscore
#10
#20
#30
#40
#50
#60
Test results
testverdicttimesubtask
#10.00 s1, 5, 6details
#20.00 s1, 5, 6details
#30.00 s1, 5, 6details
#40.00 s1, 5, 6details
#50.00 s1, 5, 6details
#60.00 s1, 5, 6details
#70.00 s1, 5, 6details
#80.00 s1, 5, 6details
#90.00 s1, 2, 5, 6details
#100.02 s2, 6details
#110.02 s2, 6details
#120.02 s2, 6details
#130.02 s2, 6details
#140.02 s2, 6details
#150.02 s2, 6details
#160.02 s2, 6details
#170.02 s2, 6details
#180.02 s2, 6details
#190.02 s2, 6details
#200.02 s2, 6details
#210.02 s2, 6details
#220.00 s3, 4, 5, 6details
#230.00 s3, 4, 5, 6details
#240.00 s3, 4, 5, 6details
#25ACCEPTED0.00 s3, 4, 5, 6details
#260.00 s3, 4, 5, 6details
#270.00 s3, 4, 5, 6details
#280.03 s4, 6details
#290.03 s4, 6details
#300.03 s4, 6details
#310.03 s4, 6details
#32ACCEPTED0.03 s4, 6details
#330.03 s4, 6details
#340.03 s4, 6details
#350.00 s5, 6details
#360.00 s5, 6details
#370.00 s5, 6details
#380.00 s5, 6details
#390.00 s5, 6details
#400.00 s5, 6details
#410.00 s5, 6details
#420.03 s6details
#430.03 s6details
#440.03 s6details
#450.03 s6details
#460.03 s6details
#470.02 s6details
#480.03 s6details

Code

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

int n, m; 
vector<vector<int>> grid;

bool possible(int c){
    bool b = true;
    for(int i = 0; i < c; i++){
        if(grid[0][i] < c - i){
            b = false;
            break;
        }
    }
    if(b) return true;
    b = true;
    for(int i = 0; i < c; i++){
        if(grid[0][m-i-1] < c - i) {
            b = false;
            break;
        }
    }
    if(b) return true;
    return false;
}

void solve(){
    cin >> n >> m;
    grid = vector<vector<int>>(n, vector<int>(m));
    for(int y = 0; y < n; y++){
        for(int x = 0; x < m; x++){
            cin >> grid[y][x];
        }
    }

    if(n == 1){
        int ans = 0;
        for(int step = 1 << 19; step > 0; step /= 2){
            if(possible(ans+step)) ans += step;
        }
        cout << ans << "\n";
        return;
    }
    else assert(false);

    int best = 1;
    for(int y = 0; y < n; y++){
        for(int x = 0; x < m; x++){
            if(grid[y][x] < best || (x != 0 && x != m-1 && y != 0 && y != n-1)) continue;
            vector<vector<bool>> visited(n, vector<bool>(m));
            priority_queue<tuple<int, int, int>> q;
            q.push(make_tuple(grid[y][x], y, x));
            visited[y][x] = true;
            int goal = grid[y][x];
            int c = 0;
            while(c < goal && q.size() > 0){
                auto[val, y, x] = q.top(); q.pop();
                goal = min(goal, val + c);
                c++;
                if(y > 0 && !visited[y-1][x]){
                    q.push(make_tuple(grid[y-1][x], y-1, x));
                    visited[y-1][x] = true;
                }
                if(y < n-1 && !visited[y+1][x]){
                    q.push(make_tuple(grid[y+1][x], y+1, x));
                    visited[y+1][x] = true;
                }
                if(x > 0 && !visited[y][x-1]){
                    q.push(make_tuple(grid[y][x-1], y, x-1));
                    visited[y][x-1] = true;
                }
                if(x < m-1 && !visited[y][x+1]){
                    q.push(make_tuple(grid[y][x+1], y, x+1));
                    visited[y][x+1] = true;
                }
            }
            best = max(best, min(goal, c));
        }
    }
    cout << best << "\n";
}
 
int main(){
    cin.tie(0)->sync_with_stdio(0);
    solve();
    return 0;
}

Test details

Test 1

Subtask: 1, 5, 6

Verdict:

input
4 4
9 11 5 7
7 9 14 3
1 3 2 3
11 4 14 8

correct output
10

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 2

Subtask: 1, 5, 6

Verdict:

input
5 3
10 7 11
8 5 5
12 9 10
3 13 9
...

correct output
10

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 3

Subtask: 1, 5, 6

Verdict:

input
4 4
3 2 2 2
5 1 1 1
8 4 1 1
7 6 2 1

correct output
8

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 4

Subtask: 1, 5, 6

Verdict:

input
3 5
1 11 1 3 5
4 12 7 8 7
13 14 14 9 4

correct output
14

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 5

Subtask: 1, 5, 6

Verdict:

input
5 3
11 8 12
11 11 12
6 2 3
11 8 13
...

correct output
12

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 6

Subtask: 1, 5, 6

Verdict:

input
3 5
14 14 14 14 14
14 14 14 14 14
14 14 14 14 14

correct output
14

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 7

Subtask: 1, 5, 6

Verdict:

input
4 4
12 8 6 5
12 9 6 1
10 1 3 2
8 1 1 1

correct output
12

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 8

Subtask: 1, 5, 6

Verdict:

input
4 4
8 3 15 14
10 12 2 4
5 16 9 6
7 13 1 11

correct output
13

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 9

Subtask: 1, 2, 5, 6

Verdict:

input
4 4
4 1 1 2
3 5 4 2
2 2 1 2
1 4 3 4

correct output
4

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 10

Subtask: 2, 6

Verdict:

input
10 20000
5 3 2 1 3 2 3 3 4 5 1 1 2 3 5 ...

correct output
5

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 11

Subtask: 2, 6

Verdict:

input
10 20000
1 2 1 2 1 2 1 2 1 1 1 1 2 1 1 ...

correct output
3

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 12

Subtask: 2, 6

Verdict:

input
10 20000
3 2 2 3 1 2 1 4 4 3 1 4 3 2 4 ...

correct output
5

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 13

Subtask: 2, 6

Verdict:

input
20000 10
1 1 3 1 2 1 1 1 1 1
1 2 2 1 1 1 1 2 1 1
2 1 1 1 2 2 1 1 1 2
1 1 1 1 1 1 1 1 1 1
...

correct output
4

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 14

Subtask: 2, 6

Verdict:

input
10 20000
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

correct output
3

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 15

Subtask: 2, 6

Verdict:

input
10 20000
3 1 3 1 2 1 2 3 2 2 1 2 1 1 2 ...

correct output
3

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 16

Subtask: 2, 6

Verdict:

input
10 20000
1 2 2 2 1 2 3 1 2 2 2 1 2 2 2 ...

correct output
4

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 17

Subtask: 2, 6

Verdict:

input
10 20000
3 3 2 3 2 3 2 2 2 2 2 1 3 2 1 ...

correct output
4

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 18

Subtask: 2, 6

Verdict:

input
10 20000
1 3 3 1 1 4 3 3 3 1 2 2 1 3 1 ...

correct output
5

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 19

Subtask: 2, 6

Verdict:

input
7 28571
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 ...

correct output
3

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 20

Subtask: 2, 6

Verdict:

input
28571 7
4 4 4 4 4 4 4
4 4 4 4 4 4 4
4 4 4 4 4 4 4
4 4 4 4 4 4 4
...

correct output
5

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 21

Subtask: 2, 6

Verdict:

input
447 447
3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 ...

correct output
3

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 22

Subtask: 3, 4, 5, 6

Verdict:

input
1 100
46 23 23 55 37 17 30 32 25 71 ...

correct output
30

user output
19

Test 23

Subtask: 3, 4, 5, 6

Verdict:

input
1 100
8 13 12 11 15 15 15 19 18 21 2...

correct output
76

user output
66

Test 24

Subtask: 3, 4, 5, 6

Verdict:

input
1 100
94 94 94 95 95 91 97 100 92 98...

correct output
95

user output
94

Test 25

Subtask: 3, 4, 5, 6

Verdict: ACCEPTED

input
1 100
83 83 83 83 83 83 83 83 83 83 ...

correct output
83

user output
83

Test 26

Subtask: 3, 4, 5, 6

Verdict:

input
1 100
33 34 35 38 38 40 41 42 42 45 ...

correct output
95

user output
33

Test 27

Subtask: 3, 4, 5, 6

Verdict:

input
1 100
57 1 80 39 18 63 30 86 85 55 8...

correct output
29

user output
12

Test 28

Subtask: 4, 6

Verdict:

input
1 200000
138736 14949 12344 104147 1333...

correct output
1806

user output
1538

Test 29

Subtask: 4, 6

Verdict:

input
1 200000
141245 141090 141163 141286 14...

correct output
155109

user output
141091

Test 30

Subtask: 4, 6

Verdict:

input
1 200000
102358 102469 102440 102402 10...

correct output
152388

user output
102358

Test 31

Subtask: 4, 6

Verdict:

input
1 200000
180410 160820 160820 180614 18...

correct output
160832

user output
160831

Test 32

Subtask: 4, 6

Verdict: ACCEPTED

input
1 200000
198270 198270 198270 198270 19...

correct output
198270

user output
198270

Test 33

Subtask: 4, 6

Verdict:

input
1 200000
1 1 3 2 1 1 2 3 6 6 6 7 8 9 10...

correct output
199995

user output
140176

Test 34

Subtask: 4, 6

Verdict:

input
1 200000
14737 162555 44228 170991 1340...

correct output
1902

user output
676

Test 35

Subtask: 5, 6

Verdict:

input
31 32
669 792 226 189 860 737 291 83...

correct output
565

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 36

Subtask: 5, 6

Verdict:

input
10 100
730 698 339 743 536 702 94 556...

correct output
529

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 37

Subtask: 5, 6

Verdict:

input
32 31
633 613 618 605 635 638 668 67...

correct output
678

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 38

Subtask: 5, 6

Verdict:

input
142 7
983 930 963 926 979 962 962
966 930 963 924 928 928 926
926 929 929 922 931 931 978
929 929 929 922 959 928 964
...

correct output
934

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 39

Subtask: 5, 6

Verdict:

input
31 32
977 977 977 977 977 977 977 97...

correct output
977

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 40

Subtask: 5, 6

Verdict:

input
50 20
1 27 14 23 38 48 56 3 12 9 6 2...

correct output
997

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 41

Subtask: 5, 6

Verdict:

input
20 50
481 532 624 290 965 58 448 872...

correct output
504

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 42

Subtask: 6

Verdict:

input
447 447
6474 27185 108482 124481 16058...

correct output
88202

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 43

Subtask: 6

Verdict:

input
1000 200
27722 57131 197677 184858 9285...

correct output
89324

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 44

Subtask: 6

Verdict:

input
447 447
70928 73154 72640 74764 75237 ...

correct output
181096

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 45

Subtask: 6

Verdict:

input
7 28571
193031 185883 171670 185794 17...

correct output
171680

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 46

Subtask: 6

Verdict:

input
10 20000
191628 191628 191628 191628 19...

correct output
191628

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 47

Subtask: 6

Verdict:

input
200 1000
3550 2640 3791 4248 4257 4504 ...

correct output
199997

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.

Test 48

Subtask: 6

Verdict:

input
1000 200
198379 62425 88013 50967 49098...

correct output
89131

user output
(empty)

Error:
code: input/code.cpp:45: void solve(): Assertion `false' failed.