Submission details
Task:Robotti
Sender:vulpesomnia
Submission time:2026-01-17 13:35:42 +0200
Language:Rust (2021)
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED100
Test results
testverdicttime
#1ACCEPTED0.00 sdetails
#2ACCEPTED0.00 sdetails
#3ACCEPTED0.00 sdetails
#4ACCEPTED0.00 sdetails
#5ACCEPTED0.00 sdetails
#6ACCEPTED0.01 sdetails

Code

use std::io;

fn main() {
    let mut input: String = String::new();
    io::stdin().read_line(&mut input).expect("gg");
    let n: usize = input.trim().parse().unwrap();
    let mut map: Vec<Vec<usize>> = vec![vec![0; n]; n];

    for i in 0..n {
        let mut input: String = String::new();
        io::stdin().read_line(&mut input).expect("gg");
        for (j, c) in input.chars().enumerate() {
            if c == '/' {
                map[j][i] = 1;
            } else if c == '\\' {
                map[j][i] = 2;
            }
        }
    }
    let mut steps: usize = 0;
    let mut coords: (i32, i32) = (0, 0);
    let mut dir: (i32, i32) = (0, 1);
    loop {
        steps += 1;
        if map[coords.0 as usize][coords.1 as usize] == 1 {
            if dir.0 == 1 {
                dir.0 = 0;
                dir.1 = -1;
            } else if dir.0 == -1 {
                dir.0 = 0;
                dir.1 = 1;
            } else if dir.1 == 1 {
                dir.1 = 0;
                dir.0 = -1;
            } else if dir.1 == -1 {
                dir.1 = 0;
                dir.0 = 1;
            }
            map[coords.0 as usize][coords.1 as usize] = 2;
        } else if map[coords.0 as usize][coords.1 as usize] == 2 {
            if dir.0 == 1 {
                dir.0 = 0;
                dir.1 = 1;
            } else if dir.0 == -1 {
                dir.0 = 0;
                dir.1 = -1;
            } else if dir.1 == 1 {
                dir.1 = 0;
                dir.0 = 1;
            } else if dir.1 == -1 {
                dir.1 = 0;
                dir.0 = -1;
            }
            map[coords.0 as usize][coords.1 as usize] = 1;
        }
        coords.1 += dir.1;
        coords.0 += dir.0;
        if (coords.0 > n as i32 - 1 || coords.0 < 0) || (coords.1 > n as i32 - 1 || coords.1 < 0) {
            break;
        }
    }
    println!("{}", steps);
}

Test details

Test 1 (public)

Verdict: ACCEPTED

input
3
./\
\./
\/.

correct output
13

user output
13

Test 2

Verdict: ACCEPTED

input
1
.

correct output
1

user output
1

Test 3

Verdict: ACCEPTED

input
5
./\/\
.....
.....
.....
...

correct output
25

user output
25

Test 4

Verdict: ACCEPTED

input
5
\\/\\
/\/\/
\\/\\
/\/\/
...

correct output
37

user output
37

Test 5

Verdict: ACCEPTED

input
20
\\/\/\/\\./\\.\/\/\.
/\\\\\\/\\\\\\\\\\\.
\\\\\\\\\\\\\\\\\\\\
/\\\\\\\\\\\\\.\\\\\
...

correct output
2519

user output
2519

Test 6

Verdict: ACCEPTED

input
20
\\..................
.\\..............\\.
..\\............\\..
...\\..........\\...
...

correct output
917489

user output
917489