Task: | Peli |
Sender: | xnor |
Submission time: | 2022-01-22 15:15:40 +0200 |
Language: | Rust |
Status: | READY |
Result: | 11 |
group | verdict | score |
---|---|---|
#1 | ACCEPTED | 11 |
#2 | WRONG ANSWER | 0 |
#3 | WRONG ANSWER | 0 |
test | verdict | time | group | |
---|---|---|---|---|
#1 | ACCEPTED | 0.01 s | 1, 2, 3 | details |
#2 | WRONG ANSWER | 0.01 s | 2, 3 | details |
#3 | WRONG ANSWER | 0.01 s | 3 | details |
#4 | ACCEPTED | 0.01 s | 1, 2, 3 | details |
#5 | ACCEPTED | 0.01 s | 1, 2, 3 | details |
Code
use std::io::{stdin, BufRead, BufReader}; fn main() { let mut stdin = BufReader::new(stdin()); let mut cur_line = String::new(); stdin.read_line(&mut cur_line).unwrap(); let mut nums = cur_line .split_whitespace() .map(|s| s.parse::<usize>().unwrap()); let n = nums.next().unwrap(); let k = nums.next().unwrap(); cur_line.clear(); stdin.read_line(&mut cur_line).unwrap(); let v = cur_line.as_bytes(); let mut max_a = 0; let mut max_b = 0; let mut max_c = 0; let mut x = 0; let mut ck = 0; for i in 0..n { ck = (ck + 1).min(k); match v[i] { b'A' => max_a += 1, b'B' => max_b += 1, b'C' => max_c += 1, _ => (), } if max_a > 0 && max_b > 0 && max_c > 0 && ck >= 3 { x += 1; max_a -= 1; max_b -= 1; max_c -= 1; ck -= 3; } max_a = max_a.min(ck); max_b = max_b.min(ck); max_c = max_c.min(ck); } println!("{}", x); }
Test details
Test 1
Group: 1, 2, 3
Verdict: ACCEPTED
input |
---|
100000 3 BBAACBCBACBACABBCBAABCBCCBCCAA... |
correct output |
---|
18201 |
user output |
---|
18201 |
Test 2
Group: 2, 3
Verdict: WRONG ANSWER
input |
---|
100000 10 BAACABCCBCBAACBBCCCCABBBBACCBA... |
correct output |
---|
29684 |
user output |
---|
28860 |
Test 3
Group: 3
Verdict: WRONG ANSWER
input |
---|
100000 50 ACAABCBBAAAACCBBABACACACBCAACA... |
correct output |
---|
32740 |
user output |
---|
32579 |
Test 4
Group: 1, 2, 3
Verdict: ACCEPTED
input |
---|
3 1 ABC |
correct output |
---|
0 |
user output |
---|
0 |
Test 5
Group: 1, 2, 3
Verdict: ACCEPTED
input |
---|
3 2 ABC |
correct output |
---|
0 |
user output |
---|
0 |