結果

問題 No.927 Second Permutation
コンテスト
ユーザー 特命ログイン
提出日時 2019-11-22 23:15:11
言語 Rust
(1.94.0 + proconio + num + itertools)
コンパイル:
/usr/bin/rustc_custom
実行:
./target/release/main
結果
AC  
実行時間 2 ms / 2,000 ms
コード長 842 bytes
記録
記録タグの例:
初AC ショートコード 純ショートコード 純主流ショートコード 最速実行時間
コンパイル時間 1,211 ms
コンパイル使用メモリ 192,692 KB
実行使用メモリ 6,400 KB
最終ジャッジ日時 2026-04-27 11:13:07
合計ジャッジ時間 3,494 ms
ジャッジサーバーID
(参考情報)
judge3_0 / judge2_1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 27
権限があれば一括ダウンロードができます

ソースコード

diff #
raw source code

use std::io::{Read, stdin};

fn main() {
    let mut buf = String::new();
    stdin().read_to_string(&mut buf).unwrap();
    let mut tok = buf.split_whitespace();
    let mut get = || tok.next().unwrap();
    
    let mut x = get()
        .as_bytes()
        .iter()
        .cloned()
        .collect::<Vec<_>>();
    x.sort();
    let (p, _) = x
        .iter()
        .enumerate()
        .rfind(|(_,s)| **s == x[0])
        .unwrap();
    let find = x
        .iter()
        .enumerate()
        .find(|(_,s)| **s != x[0]);
    let ans = match find {
        None => "-1".to_string(),
        Some((i, _)) if i+1 == x.len() && x[0] == b'0' =>
            "-1".to_string(),
        Some((i, _)) => {
            x.swap(p, i);
            x.reverse();
            String::from_utf8(x).unwrap()
        }
    };
    println!("{}", ans);
}
0