CSES - Leirikisa 2 - Results
Submission details
Task:Nautilus
Sender:MojoLake
Submission time:2023-04-18 13:06:38 +0300
Language:C++ (C++17)
Status:READY
Result:66
Feedback
groupverdictscore
#1ACCEPTED29
#2ACCEPTED37
#30
Test results
testverdicttimegroup
#1ACCEPTED0.00 s2, 3details
#2ACCEPTED0.02 s1, 2, 3details
#3ACCEPTED0.01 s1, 2, 3details
#4ACCEPTED0.01 s1, 2, 3details
#5ACCEPTED0.01 s1, 2, 3details
#6ACCEPTED0.01 s1, 2, 3details
#7ACCEPTED0.00 s1, 2, 3details
#8ACCEPTED0.02 s2, 3details
#9ACCEPTED0.01 s2, 3details
#10ACCEPTED0.01 s2, 3details
#11ACCEPTED0.01 s2, 3details
#12ACCEPTED0.00 s2, 3details
#13ACCEPTED0.03 s2, 3details
#14ACCEPTED0.04 s2, 3details
#15ACCEPTED0.03 s2, 3details
#16ACCEPTED0.01 s2, 3details
#17ACCEPTED0.00 s2, 3details
#18ACCEPTED0.03 s2, 3details
#19ACCEPTED0.04 s2, 3details
#20ACCEPTED0.01 s2, 3details
#21ACCEPTED0.01 s2, 3details
#22ACCEPTED0.00 s2, 3details
#230.01 s3details
#240.03 s3details
#250.01 s3details
#260.01 s3details
#270.01 s3details
#280.01 s3details
#290.01 s3details
#300.06 s3details
#310.01 s3details
#320.01 s3details
#330.01 s3details
#340.02 s3details
#350.04 s3details
#360.04 s3details
#370.01 s3details

Code

#include <bits/stdc++.h>

#define debug(x) cout << #x << ": " << x << "\n"
#define all(x) x.begin(), x.end()

using namespace std;
using ll = long long;

const int N = 101;
const int M = 101;
const int inf = 1e9;
const ll LLinf = 1e16;

bool grid[N][N];
bool ready[N][N][M];
bool pos[N][N];

string s;
int R, C, m;

int dy[4] = {1, -1, 0, 0};
int dx[4] = {0, 0, 1, -1};
map<char, int> c_to_dir;

bool ok(int y, int x){
    return y >= 0 && y < R && x >= 0 && x < C;
}

void dfs(int y, int x, int ind){

    if(ind == m){
        pos[y][x] = 1;
        ready[y][x][ind] = 1;
        return;
    }

    if(s[ind] == '?'){

        for(int i = 0; i < 4; ++i){
            int ny = y + dy[i];
            int nx = x + dx[i];
            
            if(!ok(ny, nx) || grid[ny][nx] || ready[ny][nx][ind+1])continue;
            dfs(ny, nx, ind+1);
        }

    }else{

        int dir = c_to_dir[s[ind]];
        int ny = y + dy[dir];
        int nx = x + dx[dir];

        if(!ok(ny, nx) || grid[ny][nx] || ready[ny][nx][ind+1])return;

        dfs(ny, nx, ind + 1);
    }
    ready[y][x][ind] = 1;
}



int main(){

    cin.tie(0)->sync_with_stdio(0);

    c_to_dir['S'] = 0;
    c_to_dir['N'] = 1;
    c_to_dir['E'] = 2;
    c_to_dir['W'] = 3;


    cin >> R >> C >> m;
    for(int i = 0; i < R; ++i){
        for(int j = 0; j < C; ++j){
            char c; cin >> c;
            grid[i][j] = c == '#';
        }
    }

    cin >> s;
    for(int i = 0; i < R; ++i){
        for(int j = 0; j < C; ++j){
            if(grid[i][j])continue;
            dfs(i, j, 0);
        }
    }
    int ans = 0;
    for(int i = 0; i < R; ++i){
        for(int j = 0; j < C; ++j){
            ans += (int)pos[i][j];
        }
    }
    cout << ans << "\n";
}   

Test details

Test 1

Group: 2, 3

Verdict: ACCEPTED

input
5 9 7
...##....
..#.##..#
..#....##
.##...#..
...

correct output
22

user output
22

Test 2

Group: 1, 2, 3

Verdict: ACCEPTED

input
100 100 100
.................................

correct output
8272

user output
8272

Test 3

Group: 1, 2, 3

Verdict: ACCEPTED

input
100 100 100
.#...#.#..#.....#.........#......

correct output
5

user output
5

Test 4

Group: 1, 2, 3

Verdict: ACCEPTED

input
100 100 100
.#...##...#...##....##.#.##..#...

correct output
1

user output
1

Test 5

Group: 1, 2, 3

Verdict: ACCEPTED

input
100 100 100
..#.#.#..###.#.#.##..########....

correct output
1

user output
1

Test 6

Group: 1, 2, 3

Verdict: ACCEPTED

input
100 100 100
.#.#.###########..#.###.######...

correct output
1

user output
1

Test 7

Group: 1, 2, 3

Verdict: ACCEPTED

input
100 100 100
##############################...

correct output
1

user output
1

Test 8

Group: 2, 3

Verdict: ACCEPTED

input
100 100 100
.................................

correct output
9503

user output
9503

Test 9

Group: 2, 3

Verdict: ACCEPTED

input
100 100 100
#..#.##..#....##...#.##.##..#....

correct output
495

user output
495

Test 10

Group: 2, 3

Verdict: ACCEPTED

input
100 100 100
#.#...######.#####.#.##...#.##...

correct output
51

user output
51

Test 11

Group: 2, 3

Verdict: ACCEPTED

input
100 100 100
.#.#.###########..#.###.######...

correct output
34

user output
34

Test 12

Group: 2, 3

Verdict: ACCEPTED

input
100 100 100
##############################...

correct output
19

user output
19

Test 13

Group: 2, 3

Verdict: ACCEPTED

input
100 100 100
.................................

correct output
9801

user output
9801

Test 14

Group: 2, 3

Verdict: ACCEPTED

input
100 100 100
..............#..................

correct output
7479

user output
7479

Test 15

Group: 2, 3

Verdict: ACCEPTED

input
100 100 100
#.#.........###.#..#.#..####.#...

correct output
5328

user output
5328

Test 16

Group: 2, 3

Verdict: ACCEPTED

input
100 100 100
.#.#.###########..#.###.######...

correct output
127

user output
127

Test 17

Group: 2, 3

Verdict: ACCEPTED

input
100 100 100
##############################...

correct output
19

user output
19

Test 18

Group: 2, 3

Verdict: ACCEPTED

input
100 100 100
.................................

correct output
10000

user output
10000

Test 19

Group: 2, 3

Verdict: ACCEPTED

input
100 100 100
..............#..................

correct output
8047

user output
8047

Test 20

Group: 2, 3

Verdict: ACCEPTED

input
100 100 100
#.#...######.#####.#.##...#.##...

correct output
3500

user output
3500

Test 21

Group: 2, 3

Verdict: ACCEPTED

input
100 100 100
.#.#.###########..#.###.######...

correct output
1228

user output
1228

Test 22

Group: 2, 3

Verdict: ACCEPTED

input
100 100 100
##############################...

correct output
43

user output
43

Test 23

Group: 3

Verdict:

input
500 500 5000
.................................

correct output
249493

user output
(empty)

Test 24

Group: 3

Verdict:

input
500 500 5000
#..#.##..#....##...#.##.##..#....

correct output
222

user output
(empty)

Test 25

Group: 3

Verdict:

input
500 500 5000
.#####....####..###...####.#.#...

correct output
1268

user output
(empty)

Test 26

Group: 3

Verdict:

input
500 500 5000
#.#####.##..#####.####..######...

correct output
805

user output
(empty)

Test 27

Group: 3

Verdict:

input
500 500 5000
##############################...

correct output
349

user output
0

Test 28

Group: 3

Verdict:

input
500 500 5000
.................................

correct output
249999

user output
(empty)

Test 29

Group: 3

Verdict:

input
500 500 5000
..............#..................

correct output
197917

user output
(empty)

Test 30

Group: 3

Verdict:

input
500 500 5000
#.#.........###.#..#.#..####.#...

correct output
79550

user output
(empty)

Test 31

Group: 3

Verdict:

input
500 500 5000
#.#####.##..#####.####..######...

correct output
1221

user output
(empty)

Test 32

Group: 3

Verdict:

input
500 500 5000
##############################...

correct output
1414

user output
0

Test 33

Group: 3

Verdict:

input
500 500 5000
.................................

correct output
250000

user output
(empty)

Test 34

Group: 3

Verdict:

input
500 500 5000
..............#..................

correct output
199752

user output
(empty)

Test 35

Group: 3

Verdict:

input
500 500 5000
.#####....####..###...####.#.#...

correct output
87691

user output
(empty)

Test 36

Group: 3

Verdict:

input
500 500 5000
#.#####.##..#####.####..######...

correct output
30998

user output
(empty)

Test 37

Group: 3

Verdict:

input
500 500 5000
##############################...

correct output
1440

user output
0