QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#336288 | #8287. Caught in the Middle | ucup-team635# | WA | 0ms | 2340kb | Rust | 3.9kb | 2024-02-24 14:34:42 | 2024-02-24 14:34:43 |
Judging History
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'