CSES - Putka Open 2020 – 1/5 - Results
Submission details
Task:Ruudukko
Sender:osku91
Submission time:2020-09-06 20:27:17 +0300
Language:Rust
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED16
#2ACCEPTED30
#3ACCEPTED54
Test results
testverdicttimegroup
#1ACCEPTED0.01 s1, 2, 3details
#2ACCEPTED0.01 s1, 2, 3details
#3ACCEPTED0.01 s1, 2, 3details
#4ACCEPTED0.01 s1, 2, 3details
#5ACCEPTED0.01 s1, 2, 3details
#6ACCEPTED0.01 s1, 2, 3details
#7ACCEPTED0.01 s2, 3details
#8ACCEPTED0.01 s2, 3details
#9ACCEPTED0.01 s2, 3details
#10ACCEPTED0.01 s2, 3details
#11ACCEPTED0.01 s2, 3details
#12ACCEPTED0.01 s2, 3details
#13ACCEPTED0.02 s3details
#14ACCEPTED0.03 s3details
#15ACCEPTED0.03 s3details
#16ACCEPTED0.03 s3details
#17ACCEPTED0.03 s3details
#18ACCEPTED0.03 s3details

Compiler report

warning: unused variable: `i`
  --> input/code.rs:18:9
   |
18 |     for i in 0..n {
   |         ^ help: consider prefixing with an underscore: `_i`
   |
   = note: `#[warn(unused_variables)]` on by default

warning: variable does not need to be mutable
  --> input/code.rs:36:13
   |
36 |         let mut line: Vec<(u32, u32)> = vec![];
   |             ----^^^^
   |             |
   |             help: remove this `mut`
   |
   = note: `#[warn(unused_mut)]` on by default

Code

use std::io;
use std::cmp;


fn main() {
    let mut input_text = String::new();
    io::stdin()
        .read_line(&mut input_text)
        .expect("failed to read from stdin");

    let trimmed = input_text.trim();

    let n = trimmed.parse::<u32>().unwrap();

    // println!("n is {}", n);

    let mut input_rows: Vec<String> = vec![];
    for i in 0..n {
        let mut input_text = String::new();
        io::stdin()
            .read_line(&mut input_text)
            .expect("failed to read from stdin");
        input_rows.push(input_text.trim().to_string());
        // println!("read a line");
        // println!("{}", input_text);
    }

    // println!("asdfasdf");
    // for i in 0..n {
    //     println!("{}", input_rows[i as usize]);
    // }

    let mut point_values: Vec<Vec<(u32, u32)>> = vec![];

    for x in 0..n {
        let mut line: Vec<(u32, u32)> = vec![];
        point_values.push(line);
        for y in 0..n {
            point_values[x as usize].push((0, 0));

            let is_addition = input_rows[x as usize].as_bytes()[y as usize] == 'o' as u8;
            // println!("{}", is_addition);
            if x == 0 && y == 0 {
                point_values[x as usize][y as usize] = (0, 0)
            } else if x == 0 {
                point_values[x as usize][y as usize] = point_values[x as usize][(y - 1) as usize]
            } else if y == 0 {
                point_values[x as usize][y as usize] = point_values[(x - 1) as usize][y as usize]
            } else {
                point_values[x as usize][y as usize].0 = cmp::min(
                    point_values[(x - 1) as usize][(y) as usize].0,
                    point_values[(x) as usize][(y - 1) as usize].0,
                );
                point_values[x as usize][y as usize].1 = cmp::max(
                    point_values[(x - 1) as usize][(y) as usize].1,
                    point_values[(x) as usize][(y - 1) as usize].1,
                );
            }

            if is_addition {
                point_values[x as usize][y as usize].0 += 1;
                point_values[x as usize][y as usize].1 += 1;
            }
        }
    }

    // println!(
    //     "asdfg {} {}",
    //     point_values[n as usize - 1][n as usize - 1].0,
    //     point_values[n as usize - 1][n as usize - 1].1,
    // );
    println!(
        "{}",
        point_values[n as usize - 1][n as usize - 1].1 -
        point_values[n as usize - 1][n as usize - 1].0 +
        1
    );
}

Test details

Test 1

Group: 1, 2, 3

Verdict: ACCEPTED

input
10
..........
..........
..........
..........
...

correct output
1

user output
1

Test 2

Group: 1, 2, 3

Verdict: ACCEPTED

input
10
o.o.......
..........
.o...o.oo.
..o...o.oo
...

correct output
9

user output
9

Test 3

Group: 1, 2, 3

Verdict: ACCEPTED

input
10
o......o..
oo.oo.....
oooo....oo
o.......oo
...

correct output
14

user output
14

Test 4

Group: 1, 2, 3

Verdict: ACCEPTED

input
10
..ooooo.oo
.ooo.o..oo
.....ooo.o
ooo.ooo.oo
...

correct output
12

user output
12

Test 5

Group: 1, 2, 3

Verdict: ACCEPTED

input
10
oooooooooo
ooo....ooo
.oo.oo.ooo
oooooooooo
...

correct output
10

user output
10

Test 6

Group: 1, 2, 3

Verdict: ACCEPTED

input
10
oooooooooo
oooooooooo
oooooooooo
oooooooooo
...

correct output
1

user output
1

Test 7

Group: 2, 3

Verdict: ACCEPTED

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

correct output
1

user output
1

Test 8

Group: 2, 3

Verdict: ACCEPTED

input
100
.........o.....o.........o..o....

correct output
114

user output
114

Test 9

Group: 2, 3

Verdict: ACCEPTED

input
100
oo..oo.oo..o...o..o.o..o.........

correct output
151

user output
151

Test 10

Group: 2, 3

Verdict: ACCEPTED

input
100
o..o.ooo..oo.o.o.o..o.o..o..oo...

correct output
143

user output
143

Test 11

Group: 2, 3

Verdict: ACCEPTED

input
100
oo..oooooooooooo.oooo.o.o.oooo...

correct output
115

user output
115

Test 12

Group: 2, 3

Verdict: ACCEPTED

input
100
oooooooooooooooooooooooooooooo...

correct output
1

user output
1

Test 13

Group: 3

Verdict: ACCEPTED

input
1000
.................................

correct output
1

user output
1

Test 14

Group: 3

Verdict: ACCEPTED

input
1000
o..........o...o...o...o.........

correct output
1121

user output
1121

Test 15

Group: 3

Verdict: ACCEPTED

input
1000
.o.............o....o.o......o...

correct output
1583

user output
1583

Test 16

Group: 3

Verdict: ACCEPTED

input
1000
oooooo.oooooo.....oooo..o...o....

correct output
1574

user output
1574

Test 17

Group: 3

Verdict: ACCEPTED

input
1000
ooooo.oo.oooooooooo...o...oo.....

correct output
1147

user output
1147

Test 18

Group: 3

Verdict: ACCEPTED

input
1000
oooooooooooooooooooooooooooooo...

correct output
1

user output
1