Submission #61166737


Source Code Expand

#![allow(dead_code)]
use proconio::{input, marker::Chars};

trait Bound<T> {
    fn lower_bound(&self, x: &T) -> usize;
    fn upper_bound(&self, x: &T) -> usize;
}

impl<T: PartialOrd> Bound<T> for [T] {
    fn lower_bound(&self, x: &T) -> usize {
        let (mut low, mut high) = (0, self.len());
        while low + 1 < high {
            let mid = (low + high) / 2;
            if self[mid] < *x {
                low = mid;
            } else {
                high = mid;
            }
        }
        if self[low] < *x {
            low + 1
        } else {
            low
        }
    }

    fn upper_bound(&self, x: &T) -> usize {
        let (mut low, mut high) = (0, self.len());
        while low + 1 < high {
            let mid = (low + high) / 2;
            if self[mid] <= *x {
                low = mid;
            } else {
                high = mid;
            }
        }
        if self[low] <= *x {
            low + 1
        } else {
            low
        }
    }
}

fn main() {
    input! {k:usize,s:Chars,t:Chars}
    if s.len() == t.len() {
        let mut diffs = 0;
        for (si, ti) in s.iter().zip(t.iter()) {
            if si != ti {
                diffs += 1;
            }
        }

        if diffs <= k {
            println!("Yes");
        } else {
            println!("No")
        }
    } else {
        let mut sidx = 0;
        let mut tidx = 0;
        let s_is_longer = s.len() > t.len();

        let mut diffs = 0;
        while s.len() > sidx && t.len() > tidx {
            if s[sidx] != t[tidx] {
                diffs += 1;
                if s_is_longer {
                    sidx += 1;
                } else {
                    tidx += 1
                }
            }

            sidx += 1;
            tidx += 1;
        }

        let len_diff = s.len().max(t.len()) - s.len().min(t.len());

        if diffs <= k && len_diff <= k {
            println!("Yes")
        } else {
            println!("No")
        }
    }
}

Submission Info

Submission Time
Task C - Operate 1
User tsu7magu6
Language Rust (rustc 1.70.0)
Score 350
Code Size 2088 Byte
Status AC
Exec Time 6 ms
Memory 6708 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 350 / 350
Status
AC × 6
AC × 32
Set Name Test Cases
Sample sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, sample_05.txt, sample_06.txt
All sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, sample_05.txt, sample_06.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt
Case Name Status Exec Time Memory
sample_01.txt AC 1 ms 1956 KiB
sample_02.txt AC 1 ms 1792 KiB
sample_03.txt AC 1 ms 1940 KiB
sample_04.txt AC 1 ms 1936 KiB
sample_05.txt AC 1 ms 1932 KiB
sample_06.txt AC 1 ms 2064 KiB
test_01.txt AC 1 ms 1960 KiB
test_02.txt AC 1 ms 2060 KiB
test_03.txt AC 1 ms 1960 KiB
test_04.txt AC 1 ms 1868 KiB
test_05.txt AC 1 ms 1924 KiB
test_06.txt AC 5 ms 6648 KiB
test_07.txt AC 6 ms 6676 KiB
test_08.txt AC 6 ms 6708 KiB
test_09.txt AC 6 ms 6588 KiB
test_10.txt AC 6 ms 6660 KiB
test_11.txt AC 2 ms 4196 KiB
test_12.txt AC 2 ms 4080 KiB
test_13.txt AC 2 ms 2808 KiB
test_14.txt AC 1 ms 2768 KiB
test_15.txt AC 5 ms 6552 KiB
test_16.txt AC 6 ms 6532 KiB
test_17.txt AC 6 ms 6684 KiB
test_18.txt AC 4 ms 6636 KiB
test_19.txt AC 6 ms 6692 KiB
test_20.txt AC 6 ms 6696 KiB
test_21.txt AC 5 ms 6680 KiB
test_22.txt AC 6 ms 6700 KiB
test_23.txt AC 5 ms 6664 KiB
test_24.txt AC 6 ms 6700 KiB
test_25.txt AC 5 ms 6648 KiB
test_26.txt AC 6 ms 6672 KiB