QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#336288#8287. Caught in the Middleucup-team635#WA 0ms2340kbRust3.9kb2024-02-24 14:34:422024-02-24 14:34:43

Judging History

你现在查看的是最新测评结果

  • [2024-02-24 14:34:43]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:2340kb
  • [2024-02-24 14:34:42]
  • 提交

answer

use std::collections::*;
use std::io::Write;

type Map<K, V> = BTreeMap<K, V>;
type Set<T> = BTreeSet<T>;
type Deque<T> = VecDeque<T>;

fn run() {
    input! {
        t: usize,
        ask: [(usize, bytes); t],
    }
    let out = std::io::stdout();
    let mut out = std::io::BufWriter::new(out.lock());
    for (n, s) in ask {
        let l = s.iter().filter(|s| **s == b'L').count();
        let r = s.iter().filter(|s| **s == b'R').count();
        let alice = s[0] == b'L' || s[n - 1] == b'R' || l != r;
        let ans = if alice {"Alice"} else {"Bob"};
        writeln!(out, "{}", ans).ok();
    }
}

fn main() {
    run();
    /*
    let mut map = Map::new();
    for _ in 0..10000 {
        let n = rand() % 20 + 1;
        let op = ['L', 'R'];
        let s = (0..n).map(|_| op[rand() % 100 / 50]).collect::<Vec<_>>();
        let ans = dfs(s.clone(), &mut map);
        let mut calc = false;
        calc |= s[0] == 'L';
        calc |= s[n - 1] == 'R';
    }
    */
}

fn dfs(s: Vec<char>, map: &mut Map<Vec<char>, bool>) -> bool {
    if s.is_empty() {
        return false;
    }
    if let Some(&v) = map.get(&s) {
        return v;
    }
    let ans = (0..s.len()).any(|x| {
        let mut s = s.clone();
        let c = s[x];
        if c == 'L' {
            s.drain(x..);
        } else {
            s.drain(..=x);
        }
        !dfs(s, map)
    });
    let mut t = s.clone();
    let mut calc = false;
    calc |= t[0] == 'L';
    calc |= t[t.len() - 1] == 'R';
    while t.len() >= 2 && t[(t.len() - 2)..] == ['R', 'L'] {
        t.pop();
        t.pop();
    }
    while t.len() >= 2 && [t[0], t[1]] == ['R', 'L'] {
        t.drain(..2);
    }
    let l = t.iter().filter(|t| **t == 'L').count();
    let r = t.iter().filter(|t| **t == 'R').count();
    calc |= l != r;
    if !ans && ans != calc {
        println!("{}: {}", s.iter().cloned().collect::<String>(), ans);
    }
    map.insert(s, ans);
    ans
}

// ---------- begin input macro ----------
// reference: https://qiita.com/tanakh/items/0ba42c7ca36cd29d0ac8
#[macro_export]
macro_rules! input {
    (source = $s:expr, $($r:tt)*) => {
        let mut iter = $s.split_whitespace();
        input_inner!{iter, $($r)*}
    };
    ($($r:tt)*) => {
        let s = {
            use std::io::Read;
            let mut s = String::new();
            std::io::stdin().read_to_string(&mut s).unwrap();
            s
        };
        let mut iter = s.split_whitespace();
        input_inner!{iter, $($r)*}
    };
}

#[macro_export]
macro_rules! input_inner {
    ($iter:expr) => {};
    ($iter:expr, ) => {};
    ($iter:expr, $var:ident : $t:tt $($r:tt)*) => {
        let $var = read_value!($iter, $t);
        input_inner!{$iter $($r)*}
    };
}

#[macro_export]
macro_rules! read_value {
    ($iter:expr, ( $($t:tt),* )) => {
        ( $(read_value!($iter, $t)),* )
    };
    ($iter:expr, [ $t:tt ; $len:expr ]) => {
        (0..$len).map(|_| read_value!($iter, $t)).collect::<Vec<_>>()
    };
    ($iter:expr, chars) => {
        read_value!($iter, String).chars().collect::<Vec<char>>()
    };
    ($iter:expr, bytes) => {
        read_value!($iter, String).bytes().collect::<Vec<u8>>()
    };
    ($iter:expr, usize1) => {
        read_value!($iter, usize) - 1
    };
    ($iter:expr, $t:ty) => {
        $iter.next().unwrap().parse::<$t>().expect("Parse error")
    };
}
// ---------- end input macro ----------
fn rand_memory() -> usize {
    Box::into_raw(Box::new("I hope this is a random number")) as usize
}

fn rand() -> usize {
    static mut X: usize = 0;
    unsafe {
        if X == 0 {
            X = rand_memory();
        }
        X ^= X << 13;
        X ^= X >> 17;
        X ^= X << 5;
        X
    }
}

fn shuffle<T>(a: &mut [T]) {
    for i in 1..a.len() {
        let p = rand() % (i + 1);
        a.swap(i, p);
    }
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 2128kb

input:

20
10
RLRRRRLLRR
10
LRLLLLRRLR
6
RLRLRL
10
LLRLRRRRLR
6
LRRLLL
3
RLR
5
LLRRR
6
RRRRRL
9
LRRRLRRLR
1
R
10
RRRLLRRLLL
6
LRLLLR
9
LLRLRLRLR
7
RRRRLRR
2
LL
10
RRRLLRRLRR
2
RL
7
RRLRRLR
3
LLR
10
LLRLRRRLLR

output:

Alice
Alice
Bob
Alice
Alice
Alice
Alice
Alice
Alice
Alice
Bob
Alice
Alice
Alice
Alice
Alice
Bob
Alice
Alice
Alice

result:

ok 20 lines

Test #2:

score: 0
Accepted
time: 0ms
memory: 2220kb

input:

20
7
LRLLRRR
8
LRLRLRRR
3
RLL
10
RLRLRLRLRL
10
RLRLRLRLRL
6
RLLLRL
10
RLRLRLRLLL
5
RLRRR
2
LL
10
RRRRLRLRLL
7
LLRRLLR
3
LRR
10
RRRRRLLLLL
10
RLRRRLRLRR
2
LR
6
RRLLLL
4
RRLR
10
LRLRLLRLRR
4
LRLL
10
RRLLRRRLLL

output:

Alice
Alice
Alice
Bob
Bob
Alice
Alice
Alice
Alice
Alice
Alice
Alice
Bob
Alice
Alice
Alice
Alice
Alice
Alice
Bob

result:

ok 20 lines

Test #3:

score: 0
Accepted
time: 0ms
memory: 2080kb

input:

20
8
LLLRRRRR
10
LRRRLRLLRL
10
RLRLRLRLRL
6
RRLRRL
10
RLLLLRLLRR
2
RR
8
LLRRRLRL
10
LRLRLRRRRR
4
RRLL
5
LLRLL
10
RLRRLLRLRL
1
R
10
RLLRRLRLLL
10
LLLRLLRLRR
10
LRRLRLLRRR
3
RRL
10
RRRLRLLRLL
1
L
3
RRL
5
LRRLL

output:

Alice
Alice
Bob
Alice
Alice
Alice
Alice
Alice
Bob
Alice
Bob
Alice
Alice
Alice
Alice
Alice
Bob
Alice
Alice
Alice

result:

ok 20 lines

Test #4:

score: 0
Accepted
time: 0ms
memory: 2340kb

input:

20
6
RLRLLL
2
RL
10
LRRRLRLRLR
7
LLLRRRR
3
RRR
3
LRL
10
LRLRRLLLLR
10
RRLLLLRLLR
5
LLLLL
10
RLRLLRLRLR
8
RRLRLRLL
9
RRLRLRRLR
8
RLRLRLRL
1
R
10
RRLRLRRRLL
3
LLL
1
L
6
LLLRLL
10
RLRLRLRRLL
3
LRL

output:

Alice
Bob
Alice
Alice
Alice
Alice
Alice
Alice
Alice
Alice
Bob
Alice
Bob
Alice
Alice
Alice
Alice
Alice
Bob
Alice

result:

ok 20 lines

Test #5:

score: 0
Accepted
time: 0ms
memory: 2124kb

input:

20
4
RLRL
10
RRRLLRLLRL
10
RLRRLRLRLL
4
RLRL
4
RLRL
2
LR
2
RL
1
R
6
RRLRLL
10
RRRLRRLLLL
1
L
10
RLLRRRLLLL
2
RL
8
RRRRLLLL
10
RRLRRRLLLL
10
RLRRLRLRLL
10
RRLLRRLRLL
1
L
4
RLRL
4
RLRL

output:

Bob
Bob
Bob
Bob
Bob
Alice
Bob
Alice
Bob
Bob
Alice
Alice
Bob
Bob
Bob
Bob
Bob
Alice
Bob
Bob

result:

ok 20 lines

Test #6:

score: 0
Accepted
time: 0ms
memory: 2156kb

input:

20
10
RRLLRLRRLL
4
RLRL
10
RRLLRLRLRL
1
L
2
LR
3
LLR
10
RLRRLRRLLL
10
RRLLRRLLRL
3
RRL
10
RRLRLLRRLL
1
L
10
RRRLLRLLRL
8
RLRLRRLL
10
RRLRLRLRLL
8
RRLLRRLL
3
RLL
4
RLRL
2
LR
10
RRRLLLRLRL
10
RRLRRRLLLL

output:

Bob
Bob
Bob
Alice
Alice
Alice
Bob
Bob
Alice
Bob
Alice
Bob
Bob
Bob
Bob
Alice
Bob
Alice
Bob
Bob

result:

ok 20 lines

Test #7:

score: 0
Accepted
time: 0ms
memory: 2012kb

input:

20
1
L
4
RRLL
10
RLRRRRLLLL
10
RRLLRRRLLL
4
RLRL
3
LRR
3
RRR
1
R
4
RRLL
10
RLRLRLRLRL
10
RRRLLRRLLL
8
RRRLLRLL
10
RLRLRRLRLL
8
RRLLRLRL
4
RRLL
10
RRLLRRRLLL
1
L
8
RLRRLRLL
8
RRLLRRLL
6
RLRRLL

output:

Alice
Bob
Bob
Bob
Bob
Alice
Alice
Alice
Bob
Bob
Bob
Bob
Bob
Bob
Bob
Bob
Alice
Bob
Bob
Bob

result:

ok 20 lines

Test #8:

score: 0
Accepted
time: 0ms
memory: 2156kb

input:

20
8
RRRLLLRL
4
RLRL
4
RLRL
10
RRRLLRLRLL
10
RLRLRLRLRL
4
RRLL
8
RRRRLLLL
6
RRLRLL
8
RRRLRLLL
10
RRRRLRLLLL
6
RLRRLL
6
RRLRLL
10
RRRLRRLLLL
8
RLRRLLRL
6
RRRLLL
4
RLRL
4
RLRL
6
RRLLRL
4
RLRL
1
L

output:

Bob
Bob
Bob
Bob
Bob
Bob
Bob
Bob
Bob
Bob
Bob
Bob
Bob
Bob
Bob
Bob
Bob
Bob
Bob
Alice

result:

ok 20 lines

Test #9:

score: 0
Accepted
time: 0ms
memory: 2160kb

input:

20
10
RRRRRLLLLL
1
L
8
RRRRLLLL
3
LRR
4
RLLL
10
RRLRRLLRLL
10
RRRRLLLRLL
1
R
2
LL
6
RRRLLL
3
RRR
10
RRRRRLLLLL
1
R
10
RRRLRRLLLL
8
RRRRLLLL
4
RRLL
10
RRRRRLLLLL
4
RRLL
8
RRRRLLLL
10
RRRRRLLLLL

output:

Bob
Alice
Bob
Alice
Alice
Bob
Bob
Alice
Alice
Bob
Alice
Bob
Alice
Bob
Bob
Bob
Bob
Bob
Bob
Bob

result:

ok 20 lines

Test #10:

score: 0
Accepted
time: 0ms
memory: 2084kb

input:

20
6
RLRLRL
2
RL
10
RLRLRLRLRL
10
RLRLRLRLRL
4
RLRL
8
RLRLRLRL
1
L
8
RLLRLLRR
6
RRLRLL
8
RLRRLLRL
10
RLRLRRLLRL
10
RLRLRLRLRL
10
RLRLRLRRLL
6
RLRLRL
8
RLRLRRLL
6
RLRLRL
6
RLRLRL
8
RLRLRLRL
10
RRRLRLLRLL
2
RL

output:

Bob
Bob
Bob
Bob
Bob
Bob
Alice
Alice
Bob
Bob
Bob
Bob
Bob
Bob
Bob
Bob
Bob
Bob
Bob
Bob

result:

ok 20 lines

Test #11:

score: 0
Accepted
time: 0ms
memory: 2144kb

input:

20
3
LRR
1
R
8
RRLLRLRL
10
LLLRRRLRLR
4
RLRL
1
L
10
RRLLRLRLRL
4
RLRL
3
LLL
10
RRLRLRLRLL
6
RRLLRL
2
LL
4
RLRL
10
RLRLRLRLRL
8
RLRLRLRL
6
RLRLRL
10
RLRRLLRLRL
10
RRRRLLRLLL
10
RLRLRLRLRL
8
RLRLRLRL

output:

Alice
Alice
Bob
Alice
Bob
Alice
Bob
Bob
Alice
Bob
Bob
Alice
Bob
Bob
Bob
Bob
Bob
Bob
Bob
Bob

result:

ok 20 lines

Test #12:

score: -100
Wrong Answer
time: 0ms
memory: 1944kb

input:

1
478
RLRLRLRRLRLLRRLLRLRRLLRRRLLLRLRLRRLLRRRRLLLLRRRLLRLLRRLRLLRRLLRLRLRRLLRLRRLRLLRLRLRRLLRLRLRRLLRLRRRRLLLLRLRLRRLLRLRRRLLLRRRRLLLLRLRLRLRLRRRLLLRLRLRLRRRRLLLLRRLRLRLLRLRLLRRRRRLLLLRLRLRLRLRRLLRRRRLLLLRRLLRLRLRLRLRLRLRLRLRLRLRRLLRLRLRRRLLLRLRRRLLRLLRLRLRRLRLLRRRLRLLLRLRRLLRLRLRRLRLLRLRLRLRLRLRLRL...

output:

Bob

result:

wrong answer 1st lines differ - expected: 'Alice', found: 'Bob'