CSES - Putka Open 2020 – 4/5 - Results
Submission details
Task:Peli
Sender:Hennkka
Submission time:2020-11-06 21:23:52 +0200
Language:Rust
Status:READY
Result:100
Feedback
groupverdictscore
#1ACCEPTED35
#2ACCEPTED65
Test results
testverdicttimegroup
#1ACCEPTED0.01 s1, 2details
#2ACCEPTED0.01 s2details

Compiler report

warning: unused imports: `HashMap`, `VecDeque`
 --> input/code.rs:1:24
  |
1 | use std::collections::{HashMap, VecDeque};
  |                        ^^^^^^^  ^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

Code

use std::collections::{HashMap, VecDeque};
use std::io::BufRead;

fn solve(a: usize, b: usize, n: usize) -> usize {
    let (a, b) = if a < b { (a, b) } else { (b, a) };
    let rounds_till_left = a + b - 1;
    let rounds_till_right = n - 1 - b + n - 2 - a;
    assert_eq!(rounds_till_left % 2, rounds_till_right % 2);
    if rounds_till_left % 2 == 1 || rounds_till_right % 2 == 1 {
        1
    } else {
        2
    }
}

fn main() {
    let stdin = std::io::stdin();
    let stdin = stdin.lock();
    let mut lines = stdin.lines();

    let t: usize = lines.next().unwrap().unwrap().parse().unwrap();
    for _ in 0..t {
        let l: String = lines.next().unwrap().unwrap();
        let mut a = None;
        let mut b = None;
        for (i, c) in l.chars().enumerate() {
            if c == 'P' {
                if a == None {
                    a = Some(i);
                } else {
                    b = Some(i);
                }
            }
        }
        println!("{}", solve(a.unwrap(), b.unwrap(), l.len()));
    }
}

#[cfg(test)]
mod tests {
    use super::*;
}

Test details

Test 1

Group: 1, 2

Verdict: ACCEPTED

input
100
PP.
P......P.
.PP
..P.P.
...

correct output
2
2
2
1
2
...

user output
2
2
2
1
2
...

Test 2

Group: 2

Verdict: ACCEPTED

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

correct output
2
1
2
1
1
...

user output
2
1
2
1
1
...