Submission #18834984
Source Code Expand
use std::cmp::min;
fn main() {
let (r, w) = (std::io::stdin(), std::io::stdout());
let mut sc = IO::new(r.lock(), w.lock());
let a = sc.chars();
let b = sc.chars();
let mut da = vec![];
let mut db = vec![];
let n = a.len();
for i in 0..n {
if a[i] != b[i] {
da.push(a[i]);
db.push(b[i]);
}
}
if da.len() > 6 {
println!("NO");
return;
}
if let Some(ans) = min_swaps(&mut da, &mut db, 0) {
if ans == 1 || ans == 3 {
println!("YES");
return;
}
let mut a = a.clone();
a.sort();
a.dedup();
if a.len() < n {
println!("YES");
} else {
println!("NO");
}
} else {
println!("NO");
}
}
fn min_swaps(da: &mut [char], db: &[char], depth: usize) -> Option<usize> {
if da == db {
return Some(depth);
}
if depth == 3 {
return None;
}
let n = da.len();
let mut result = 5;
for i in 0..n {
for j in 0..i {
da.swap(i, j);
if let Some(d) = min_swaps(da, db, depth + 1) {
result = min(result, d);
}
da.swap(i, j);
}
}
if result > 3 {
None
} else {
Some(result)
}
}
pub struct IO<R, W: std::io::Write>(R, std::io::BufWriter<W>);
impl<R: std::io::Read, W: std::io::Write> IO<R, W> {
pub fn new(r: R, w: W) -> Self {
Self(r, std::io::BufWriter::new(w))
}
pub fn write<S: ToString>(&mut self, s: S) {
use std::io::Write;
self.1.write_all(s.to_string().as_bytes()).unwrap();
}
pub fn read<T: std::str::FromStr>(&mut self) -> T {
use std::io::Read;
let buf = self
.0
.by_ref()
.bytes()
.map(|b| b.unwrap())
.skip_while(|&b| b == b' ' || b == b'\n' || b == b'\r' || b == b'\t')
.take_while(|&b| b != b' ' && b != b'\n' && b != b'\r' && b != b'\t')
.collect::<Vec<_>>();
unsafe { std::str::from_utf8_unchecked(&buf) }
.parse()
.ok()
.expect("Parse error.")
}
pub fn vec<T: std::str::FromStr>(&mut self, n: usize) -> Vec<T> {
(0..n).map(|_| self.read()).collect()
}
pub fn chars(&mut self) -> Vec<char> {
self.read::<String>().chars().collect()
}
}
Submission Info
| Submission Time | |
|---|---|
| Task | C - 仲良し文字列 |
| User | kenkoooo |
| Language | Rust (1.42.0) |
| Score | 100 |
| Code Size | 2544 Byte |
| Status | AC |
| Exec Time | 3 ms |
| Memory | 2208 KiB |
Judge Result
| Set Name | All | ||
|---|---|---|---|
| Score / Max Score | 100 / 100 | ||
| Status |
|
| Set Name | Test Cases |
|---|---|
| All | manual_01.txt, manual_02.txt, manual_03.txt, manual_04.txt, manual_05.txt, manual_06.txt, 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, 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_62.txt, test_63.txt, test_64.txt, test_65.txt, test_66.txt, test_67.txt, test_68.txt, test_69.txt, sample_01.txt, sample_02.txt, sample_03.txt, sample_04.txt, sample_05.txt, sample_06.txt |
| Case Name | Status | Exec Time | Memory |
|---|---|---|---|
| manual_01.txt | AC | 1 ms | 1952 KiB |
| manual_02.txt | AC | 1 ms | 2100 KiB |
| manual_03.txt | AC | 1 ms | 2068 KiB |
| manual_04.txt | AC | 1 ms | 2060 KiB |
| manual_05.txt | AC | 1 ms | 2196 KiB |
| manual_06.txt | AC | 2 ms | 2088 KiB |
| sample_01.txt | AC | 2 ms | 1920 KiB |
| sample_02.txt | AC | 1 ms | 2056 KiB |
| sample_03.txt | AC | 1 ms | 2040 KiB |
| sample_04.txt | AC | 2 ms | 1988 KiB |
| sample_05.txt | AC | 1 ms | 2072 KiB |
| sample_06.txt | AC | 1 ms | 2052 KiB |
| test_01.txt | AC | 1 ms | 2052 KiB |
| test_02.txt | AC | 2 ms | 2028 KiB |
| test_03.txt | AC | 2 ms | 2088 KiB |
| test_04.txt | AC | 2 ms | 2140 KiB |
| test_05.txt | AC | 1 ms | 2072 KiB |
| test_06.txt | AC | 1 ms | 2100 KiB |
| test_07.txt | AC | 1 ms | 2080 KiB |
| test_08.txt | AC | 1 ms | 2004 KiB |
| test_09.txt | AC | 1 ms | 2076 KiB |
| test_10.txt | AC | 2 ms | 2092 KiB |
| test_11.txt | AC | 3 ms | 2144 KiB |
| test_12.txt | AC | 1 ms | 2076 KiB |
| test_13.txt | AC | 1 ms | 2160 KiB |
| test_14.txt | AC | 1 ms | 2044 KiB |
| test_15.txt | AC | 1 ms | 2028 KiB |
| test_16.txt | AC | 1 ms | 2060 KiB |
| test_17.txt | AC | 2 ms | 2152 KiB |
| test_18.txt | AC | 2 ms | 2128 KiB |
| test_19.txt | AC | 1 ms | 2056 KiB |
| test_20.txt | AC | 2 ms | 2208 KiB |
| test_21.txt | AC | 1 ms | 2036 KiB |
| test_22.txt | AC | 2 ms | 2144 KiB |
| test_23.txt | AC | 1 ms | 2148 KiB |
| test_24.txt | AC | 2 ms | 1980 KiB |
| test_25.txt | AC | 2 ms | 2128 KiB |
| test_26.txt | AC | 2 ms | 2108 KiB |
| test_27.txt | AC | 2 ms | 2068 KiB |
| test_28.txt | AC | 1 ms | 2136 KiB |
| test_29.txt | AC | 1 ms | 2144 KiB |
| test_30.txt | AC | 1 ms | 2048 KiB |
| test_31.txt | AC | 2 ms | 1944 KiB |
| test_32.txt | AC | 2 ms | 2080 KiB |
| test_33.txt | AC | 3 ms | 2064 KiB |
| test_34.txt | AC | 2 ms | 2064 KiB |
| test_35.txt | AC | 1 ms | 2080 KiB |
| test_36.txt | AC | 2 ms | 2060 KiB |
| test_37.txt | AC | 1 ms | 2092 KiB |
| test_38.txt | AC | 1 ms | 2080 KiB |
| test_39.txt | AC | 2 ms | 2052 KiB |
| test_40.txt | AC | 1 ms | 1980 KiB |
| test_41.txt | AC | 2 ms | 2116 KiB |
| test_42.txt | AC | 2 ms | 2080 KiB |
| test_43.txt | AC | 2 ms | 1956 KiB |
| test_44.txt | AC | 1 ms | 1956 KiB |
| test_45.txt | AC | 1 ms | 2024 KiB |
| test_46.txt | AC | 2 ms | 2088 KiB |
| test_47.txt | AC | 1 ms | 2116 KiB |
| test_48.txt | AC | 2 ms | 2080 KiB |
| test_49.txt | AC | 1 ms | 2080 KiB |
| test_50.txt | AC | 1 ms | 2200 KiB |
| test_51.txt | AC | 1 ms | 1980 KiB |
| test_52.txt | AC | 2 ms | 2076 KiB |
| test_53.txt | AC | 3 ms | 2068 KiB |
| test_54.txt | AC | 1 ms | 1940 KiB |
| test_55.txt | AC | 2 ms | 2068 KiB |
| test_56.txt | AC | 1 ms | 2060 KiB |
| test_57.txt | AC | 1 ms | 2100 KiB |
| test_58.txt | AC | 3 ms | 2048 KiB |
| test_59.txt | AC | 1 ms | 2096 KiB |
| test_60.txt | AC | 1 ms | 2016 KiB |
| test_62.txt | AC | 2 ms | 1944 KiB |
| test_63.txt | AC | 1 ms | 2052 KiB |
| test_64.txt | AC | 2 ms | 2064 KiB |
| test_65.txt | AC | 1 ms | 2204 KiB |
| test_66.txt | AC | 1 ms | 2044 KiB |
| test_67.txt | AC | 1 ms | 2116 KiB |
| test_68.txt | AC | 1 ms | 2100 KiB |
| test_69.txt | AC | 1 ms | 2100 KiB |