Submission #1680709


Source Code Expand

#![allow(unused_imports, unused_variables, dead_code)]
use std::io::*;
use std::fmt::*;
use std::str::*;
use std::cmp::*;
use std::collections::*;

trait InputValue {
    fn parse(s: &str) -> Self;
}

fn read<T: InputValue>() -> T {
    let mut buf = String::new();
    let _ = stdin().read_line(&mut buf);
    T::parse(&buf.trim())
}

fn readnc<T: InputValue>() -> Vec<T> {
    let mut vec = vec![];
    let line: String = read();
    for token in line.split_whitespace() {
        vec.push(T::parse(token));
    }
    vec
}

fn readn<T: InputValue>(n: usize) -> Vec<T> {
    let mut vec = vec![];
    for _ in 0..n {
        vec.push(read());
    }
    vec
}

macro_rules! parse_single_value {
    ($($t:ty),*) => {
        $(
            impl InputValue for $t {
                fn parse(s: &str) -> $t { s.parse().unwrap() }
            }
        )*
	}
}
parse_single_value!(i32, i64, f32, f64, usize, String);

macro_rules! parse_tuple {
	($($t:ident),*) => {
		impl<$($t),*> InputValue for ($($t),*) where $($t: InputValue),* {
			fn parse(s: &str) -> ($($t),*) {
				let mut tokens = s.split_whitespace();
				let t = ($($t::parse(tokens.next().unwrap())),*);
				t
			}
		}
	}
}
parse_tuple!(A, B);
parse_tuple!(A, B, C);
parse_tuple!(A, B, C, D);

// ===

fn compute_partial_sum(s: String) -> Vec<i32> {
    let n = s.len();
    let mut sum = vec![0; n+1];

    let s = s.into_bytes();
    for i in 0..n {
        if s[i] == 'A' as u8 {
            sum[i+1] = sum[i] + 1;
        } else {
            sum[i+1] = sum[i] + 2;
        }
    }
    sum
}

fn main() {
    let s: String = read();
    let t: String = read();

    let s = compute_partial_sum(s);
    let t = compute_partial_sum(t);

    let q: usize = read();
    for i in 0..q {
        let (a, b, c, d): (usize, usize, usize, usize) = read();

        if (s[b] - s[a-1]) % 3 == (t[d] - t[c-1]) % 3 {
            println!("YES");
        } else {
            println!("NO");
        }
    }
}

Submission Info

Submission Time
Task E - TrBBnsformBBtion
User hamadu
Language Rust (1.15.1)
Score 600
Code Size 2056 Byte
Status AC
Exec Time 213 ms
Memory 4732 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 600 / 600
Status
AC × 2
AC × 16
Set Name Test Cases
Sample 0_000.txt, 0_001.txt
All 0_000.txt, 0_001.txt, bound_0.txt, bound_1.txt, bound_2.txt, bound_3.txt, min.txt, rnd_10000_10.txt, rnd_10000_10000.txt, rnd_10000_2.txt, rnd_10_10.txt, rnd_10_10000.txt, rnd_10_2.txt, rnd_2_10.txt, rnd_2_10000.txt, rnd_2_2.txt
Case Name Status Exec Time Memory
0_000.txt AC 2 ms 4352 KB
0_001.txt AC 2 ms 4352 KB
bound_0.txt AC 193 ms 4604 KB
bound_1.txt AC 193 ms 4604 KB
bound_2.txt AC 195 ms 4604 KB
bound_3.txt AC 199 ms 4604 KB
min.txt AC 2 ms 4352 KB
rnd_10000_10.txt AC 199 ms 4604 KB
rnd_10000_10000.txt AC 198 ms 4604 KB
rnd_10000_2.txt AC 213 ms 4604 KB
rnd_10_10.txt AC 197 ms 4604 KB
rnd_10_10000.txt AC 197 ms 4604 KB
rnd_10_2.txt AC 200 ms 4604 KB
rnd_2_10.txt AC 199 ms 4732 KB
rnd_2_10000.txt AC 197 ms 4604 KB
rnd_2_2.txt AC 195 ms 4604 KB