CSES - Datatähti 2025 loppu - Results
Submission details
Task:Suunnistus
Sender:adex720
Submission time:2025-01-18 14:02:00 +0200
Language:C++ (C++20)
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED31
#2ACCEPTED12
#3ACCEPTED57
Test results
testverdicttimegroup
#1ACCEPTED0.00 s3details
#2ACCEPTED0.01 s1, 2, 3details
#3ACCEPTED0.01 s1, 2, 3details
#4ACCEPTED0.01 s1, 2, 3details
#5ACCEPTED0.00 s1, 2, 3details
#6ACCEPTED0.00 s1, 2, 3details
#7ACCEPTED0.18 s2, 3details
#8ACCEPTED0.21 s2, 3details
#9ACCEPTED0.01 s2, 3details
#10ACCEPTED0.04 s3details
#11ACCEPTED0.05 s3details
#12ACCEPTED0.01 s3details
#13ACCEPTED0.20 s3details
#14ACCEPTED0.10 s2, 3details
#15ACCEPTED0.00 s3details
#16ACCEPTED0.00 s3details
#17ACCEPTED0.03 s2, 3details

Compiler report

input/code.cpp: In function 'int main()':
input/code.cpp:19:9: warning: unused variable 'rastiX' [-Wunused-variable]
   19 |     int rastiX[k + 1];
      |         ^~~~~~
input/code.cpp:20:9: warning: unused variable 'rastiY' [-Wunused-variable]
   20 |     int rastiY[k + 1];
      |         ^~~~~~

Code

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

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);

    int n, m, k;
    cin >> n >> m >> k;

    string s;
    char c;

    int kartta[n + 2][m + 2];

    int alkuX, alkuY;

    int rastiX[k + 1];
    int rastiY[k + 1];

    for (int y = 1; y <= n; y++)
    {
        cin >> s;
        for (int x = 1; x <= m; x++)
        {
            c = s[x - 1];

            kartta[y][x] = c == '#' ? -1 : 0;

            if (c == 'S')
            {
                alkuX = x;
                alkuY = y;
            }
            if (c == 'E')
            {
                kartta[y][x] = k + 1;
            }

            if (c >= '0' && c <= '9')
            {
                kartta[y][x] = c - '0';
            }
        }
    }

    for (int i = 0; i < n + 1; i++)
    {
        kartta[i][0] = -1;
        kartta[i][m + 1] = -1;
    }

    for (int i = 0; i < m + 1; i++)
    {
        kartta[0][i] = -1;
        kartta[n + 1][i] = -1;
    }

    int kayty[n + 2][m + 2][k + 1];

    for (int y = 0; y < n + 2; y++)
    {
        for (int x = 0; x < m + 2; x++)
        {
            for (int i = 0; i <= k; i++)
            {
                kayty[y][x][i] = 0;
            }
        }
    }

    queue<pair<pair<int, int>, pair<int, int>>> q;
    q.push({{alkuY, alkuX}, {0, 0}});

    while (!q.empty())
    {
        auto p = q.front();
        q.pop();

        int y = p.first.first;
        int x = p.first.second;
        int rasti = p.second.first;
        int matka = p.second.second;

        if (kayty[y][x][rasti])
            continue;
        kayty[y][x][rasti] = 1;

        if (kartta[y][x] == rasti + 1)
        {
            rasti++;

            if (rasti == k + 1)
            {
                cout << matka;
                return 0;
            }
        }

        if (kartta[y - 1][x] >= 0)
        {
            q.push({{y - 1, x}, {rasti, matka + 1}});
        }
        if (kartta[y + 1][x] >= 0)
        {
            q.push({{y + 1, x}, {rasti, matka + 1}});
        }
        if (kartta[y][x - 1] >= 0)
        {
            q.push({{y, x - 1}, {rasti, matka + 1}});
        }
        if (kartta[y][x + 1] >= 0)
        {
            q.push({{y, x + 1}, {rasti, matka + 1}});
        }
    }

    cout << -1;
}

Test details

Test 1

Group: 3

Verdict: ACCEPTED

input
10 10 9
S293#35616
#662963731
54975451#7
5162589168
...

correct output
25

user output
25

Test 2

Group: 1, 2, 3

Verdict: ACCEPTED

input
500 500 0
.................................

correct output
301

user output
301

Test 3

Group: 1, 2, 3

Verdict: ACCEPTED

input
500 500 0
.#.........#.#..##..#............

correct output
253

user output
253

Test 4

Group: 1, 2, 3

Verdict: ACCEPTED

input
500 500 0
...#......##.##.#.#..##..#..##...

correct output
-1

user output
-1

Test 5

Group: 1, 2, 3

Verdict: ACCEPTED

input
500 1 0
.
.
.
.
...

correct output
77

user output
77

Test 6

Group: 1, 2, 3

Verdict: ACCEPTED

input
1 500 0
.................................

correct output
166

user output
166

Test 7

Group: 2, 3

Verdict: ACCEPTED

input
500 500 9
.................................

correct output
3447

user output
3447

Test 8

Group: 2, 3

Verdict: ACCEPTED

input
500 500 9
.#........#..................#...

correct output
4952

user output
4952

Test 9

Group: 2, 3

Verdict: ACCEPTED

input
500 500 9
##.########.##########.#..#......

correct output
-1

user output
-1

Test 10

Group: 3

Verdict: ACCEPTED

input
500 500 9
623475428948841896621266296765...

correct output
205

user output
205

Test 11

Group: 3

Verdict: ACCEPTED

input
500 500 9
7##814125813#3463#272134469457...

correct output
157

user output
157

Test 12

Group: 3

Verdict: ACCEPTED

input
500 500 9
##67##36##5#3###67###8972#61##...

correct output
-1

user output
-1

Test 13

Group: 3

Verdict: ACCEPTED

input
500 500 9
....................#...#........

correct output
1313

user output
1313

Test 14

Group: 2, 3

Verdict: ACCEPTED

input
499 499 9
S#...#...#...#...#...#...#...#...

correct output
1124942

user output
1124942

Test 15

Group: 3

Verdict: ACCEPTED

input
500 1 9
1
6
1
3
...

correct output
332

user output
332

Test 16

Group: 3

Verdict: ACCEPTED

input
1 500 9
996327784392827829434482995353...

correct output
135

user output
135

Test 17

Group: 2, 3

Verdict: ACCEPTED

input
500 500 9
.................................

correct output
-1

user output
-1