提出 #61258485


ソースコード 拡げる

#![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() as i32 - t.len() as i32).abs() > k as i32 {
        println!("No");
        return;
    }

    let s_length = s.len();
    let t_length = t.len();

    let mut dp = vec![vec![usize::MAX; 2 * k + 1]; s_length + 1];

    dp[0][k] = 0;

    for i in 0..=s.len() {
        for dj in 0..=(2 * k) {
            let j = i as i32 + dj as i32 - k as i32;
            if j < 0 {
                continue;
            }
            let j = j as usize;
            if j > t_length {
                break;
            }

            if i > 0 && dj < 2 * k {
                dp[i][dj] = dp[i][dj].min(dp[i - 1][dj + 1] + 1)
            }
            if j > 0 && dj > 0 {
                dp[i][dj] = dp[i][dj].min(dp[i][dj - 1] + 1)
            }

            if i > 0 && j > 0 {
                let add = if s[i - 1] == t[j - 1] { 0 } else { 1 };
                dp[i][dj] = dp[i][dj].min(dp[i - 1][dj] + add)
            }
        }
    }

    if dp[s_length][k + t_length - s_length] <= k {
        println!("Yes")
    } else {
        println!("No")
    }
}

提出情報

提出日時
問題 F - Operate K
ユーザ tsu7magu6
言語 Rust (rustc 1.70.0)
得点 525
コード長 2207 Byte
結果 AC
実行時間 215 ms
メモリ 182540 KiB

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 525 / 525
結果
AC × 3
AC × 83
セット名 テストケース
Sample sample_01.txt, sample_02.txt, sample_03.txt
All hand_01.txt, hand_02.txt, hand_03.txt, hand_04.txt, sample_01.txt, sample_02.txt, sample_03.txt, small_01.txt, small_02.txt, small_03.txt, small_04.txt, small_05.txt, small_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, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt, test_44.txt, test_45.txt, test_46.txt, test_47.txt, test_48.txt, test_49.txt, test_50.txt, test_51.txt, test_52.txt, test_53.txt, test_54.txt, test_55.txt, test_56.txt, test_57.txt, test_58.txt, test_59.txt, test_60.txt, test_61.txt, test_62.txt, test_63.txt, test_64.txt, test_65.txt, test_66.txt, test_67.txt, test_68.txt, test_69.txt, test_70.txt
ケース名 結果 実行時間 メモリ
hand_01.txt AC 190 ms 166968 KiB
hand_02.txt AC 183 ms 159036 KiB
hand_03.txt AC 195 ms 166948 KiB
hand_04.txt AC 185 ms 159024 KiB
sample_01.txt AC 1 ms 1968 KiB
sample_02.txt AC 1 ms 1924 KiB
sample_03.txt AC 1 ms 1952 KiB
small_01.txt AC 1 ms 1936 KiB
small_02.txt AC 1 ms 2072 KiB
small_03.txt AC 1 ms 1932 KiB
small_04.txt AC 1 ms 1884 KiB
small_05.txt AC 1 ms 1928 KiB
small_06.txt AC 1 ms 1908 KiB
test_01.txt AC 1 ms 1940 KiB
test_02.txt AC 1 ms 2012 KiB
test_03.txt AC 1 ms 1896 KiB
test_04.txt AC 1 ms 1808 KiB
test_05.txt AC 1 ms 1808 KiB
test_06.txt AC 32 ms 34120 KiB
test_07.txt AC 32 ms 34120 KiB
test_08.txt AC 31 ms 34172 KiB
test_09.txt AC 5 ms 6736 KiB
test_10.txt AC 5 ms 6712 KiB
test_11.txt AC 3 ms 4204 KiB
test_12.txt AC 3 ms 4300 KiB
test_13.txt AC 2 ms 2672 KiB
test_14.txt AC 1 ms 2736 KiB
test_15.txt AC 31 ms 34136 KiB
test_16.txt AC 31 ms 34156 KiB
test_17.txt AC 32 ms 34112 KiB
test_18.txt AC 31 ms 34104 KiB
test_19.txt AC 33 ms 34200 KiB
test_20.txt AC 32 ms 34076 KiB
test_21.txt AC 32 ms 34140 KiB
test_22.txt AC 31 ms 34116 KiB
test_23.txt AC 31 ms 34060 KiB
test_24.txt AC 5 ms 6684 KiB
test_25.txt AC 31 ms 34012 KiB
test_26.txt AC 5 ms 6608 KiB
test_27.txt AC 215 ms 182540 KiB
test_28.txt AC 215 ms 182456 KiB
test_29.txt AC 5 ms 6684 KiB
test_30.txt AC 4 ms 6688 KiB
test_31.txt AC 3 ms 4272 KiB
test_32.txt AC 3 ms 4096 KiB
test_33.txt AC 214 ms 182380 KiB
test_34.txt AC 3 ms 4420 KiB
test_35.txt AC 3 ms 5232 KiB
test_36.txt AC 60 ms 57408 KiB
test_37.txt AC 160 ms 135540 KiB
test_38.txt AC 69 ms 65232 KiB
test_39.txt AC 69 ms 65164 KiB
test_40.txt AC 212 ms 182508 KiB
test_41.txt AC 5 ms 6612 KiB
test_42.txt AC 175 ms 143440 KiB
test_43.txt AC 5 ms 6704 KiB
test_44.txt AC 202 ms 174668 KiB
test_45.txt AC 5 ms 6680 KiB
test_46.txt AC 194 ms 166968 KiB
test_47.txt AC 5 ms 6712 KiB
test_48.txt AC 211 ms 181956 KiB
test_49.txt AC 121 ms 103888 KiB
test_50.txt AC 41 ms 41808 KiB
test_51.txt AC 214 ms 181984 KiB
test_52.txt AC 59 ms 57368 KiB
test_53.txt AC 68 ms 65012 KiB
test_54.txt AC 212 ms 181912 KiB
test_55.txt AC 60 ms 57440 KiB
test_56.txt AC 131 ms 112012 KiB
test_57.txt AC 130 ms 112036 KiB
test_58.txt AC 210 ms 181964 KiB
test_59.txt AC 215 ms 181968 KiB
test_60.txt AC 214 ms 182052 KiB
test_61.txt AC 139 ms 119688 KiB
test_62.txt AC 111 ms 96516 KiB
test_63.txt AC 184 ms 158724 KiB
test_64.txt AC 0 ms 1924 KiB
test_65.txt AC 1 ms 1908 KiB
test_66.txt AC 0 ms 1936 KiB
test_67.txt AC 1 ms 1740 KiB
test_68.txt AC 0 ms 1940 KiB
test_69.txt AC 1 ms 2008 KiB
test_70.txt AC 1 ms 1932 KiB