CSES - Datatähti 2025 loppu - Results
Submission details
Task:Suunnistus
Sender:AH
Submission time:2025-01-18 15:27:55 +0200
Language:C++ (C++20)
Status:READY
Result:0
Feedback
groupverdictscore
#10
#20
#30
Test results
testverdicttimegroup
#1ACCEPTED0.00 s3details
#20.01 s1, 2, 3details
#30.01 s1, 2, 3details
#4ACCEPTED0.01 s1, 2, 3details
#50.01 s1, 2, 3details
#60.00 s1, 2, 3details
#7ACCEPTED0.05 s2, 3details
#8ACCEPTED0.07 s2, 3details
#9ACCEPTED0.01 s2, 3details
#100.01 s3details
#110.01 s3details
#12ACCEPTED0.01 s3details
#130.02 s3details
#14ACCEPTED0.04 s2, 3details
#150.01 s3details
#160.00 s3details
#17ACCEPTED0.01 s2, 3details

Code

#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
 
typedef tree<int,null_type,less<>,rb_tree_tag,tree_order_statistics_node_update> index_set;
typedef long long ll;
typedef unsigned int uint;
typedef unsigned long long ull;
 
#define F first
#define S second
#define PB push_back
#define EB emplace_back
#define FOR(i,a,b) for (int i = a; i < b; i++)
 
constexpr ll MOD = 1000000007;

char c[510][510], co[510][510];
int e[510][510];

int main() {
    ios_base::sync_with_stdio(false); cin.tie(nullptr);
    int n, m, k; cin >> n >> m >> k;
    pair<int, int> S, E;
    FOR(i,0,n) {
        string x; cin >> x;
        FOR(j,0,m) {
            c[i][j] = x[j];
            co[i][j] = x[j];
            if (c[i][j] == 'S') S = {i, j};
            if (c[i][j] == 'E') E = {i, j};
        }
    }
    pair<int, int> cur = S;
    char wan = '1';
    FOR(i,1,k+2) {
        queue<pair<int, int>> q;
        q.emplace(cur.F, cur.S);
        while (!q.empty()) {
            auto s = q.front(); q.pop();
            if (c[s.F][s.S] == '#') continue;
            if (c[s.F][s.S] == wan) {cur = {s.F, s.S}; break;}
            //cout << s.F << " " << s.S << "\n";
            c[s.F][s.S] = '#';
            if (s.F > 0) q.emplace(s.F-1, s.S), e[s.F-1][s.S] = e[s.F][s.S] + 1;
            if (s.F < n-1) q.emplace(s.F+1, s.S), e[s.F+1][s.S] = e[s.F][s.S] + 1;
            if (s.S > 0) q.emplace(s.F, s.S-1), e[s.F][s.S-1] = e[s.F][s.S] + 1;
            if (s.S < m-1) q.emplace(s.F, s.S+1), e[s.F][s.S+1] = e[s.F][s.S] + 1;
        }
        //cout << cur.F << " " << cur.S << " " << wan << " " << e[cur.F][cur.S] << "\n";
        if (c[cur.F][cur.S] != wan) {
            cout << -1;
            return 0;
        }
        if (i >= k) wan = 'E';
        if (i < k) wan = wan + 1;
        FOR(i,0,510) {
            FOR(j,0,510) {
                c[i][j] = co[i][j];
            }
        }
    }
    if (e[E.F][E.S]) cout << e[E.F][E.S] << "\n";
    else 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:

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

correct output
301

user output
-1

Test 3

Group: 1, 2, 3

Verdict:

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

correct output
253

user output
-1

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:

input
500 1 0
.
.
.
.
...

correct output
77

user output
-1

Test 6

Group: 1, 2, 3

Verdict:

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

correct output
166

user output
-1

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:

input
500 500 9
623475428948841896621266296765...

correct output
205

user output
217

Test 11

Group: 3

Verdict:

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

correct output
157

user output
179

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:

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

correct output
1313

user output
1571

Test 14

Group: 2, 3

Verdict: ACCEPTED

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

correct output
1124942

user output
1124942

Test 15

Group: 3

Verdict:

input
500 1 9
1
6
1
3
...

correct output
332

user output
364

Test 16

Group: 3

Verdict:

input
1 500 9
996327784392827829434482995353...

correct output
135

user output
169

Test 17

Group: 2, 3

Verdict: ACCEPTED

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

correct output
-1

user output
-1