結果
| 問題 | 
                            No.83 最大マッチング
                             | 
                    
| コンテスト | |
| ユーザー | 
                             | 
                    
| 提出日時 | 2019-04-30 11:25:29 | 
| 言語 | Rust  (1.83.0 + proconio)  | 
                    
| 結果 | 
                             
                                AC
                                 
                             
                            
                         | 
                    
| 実行時間 | 4 ms / 5,000 ms | 
| コード長 | 816 bytes | 
| コンパイル時間 | 13,635 ms | 
| コンパイル使用メモリ | 395,012 KB | 
| 実行使用メモリ | 6,820 KB | 
| 最終ジャッジ日時 | 2024-12-29 13:17:07 | 
| 合計ジャッジ時間 | 14,128 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge2 / judge5 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 3 | 
| other | AC * 10 | 
ソースコード
fn main() {
    let mut input = String::new();
    let _ = std::io::stdin().read_line(&mut input);
    let input: i32 = input.trim().parse().unwrap();
    let numbers = vec![6, 2, 5, 5, 4, 5, 6, 3, 7, 6];
    let digit = input / numbers[1];
    let mut picked_index = vec![1; digit as usize];
    let mut rest = input % numbers[1];
    for i in (0..digit as usize).rev() {
        if rest == 0 {
            break;
        }
        for j in (1..10).rev() {
            if rest + numbers[picked_index[i] as usize] >= numbers[j] {
                rest = rest + numbers[picked_index[i] as usize] - numbers[j];
                picked_index[i] = j;
                break;
            }
        }
    }
    let result = picked_index.iter().rev().map(|x| x.to_string()).collect::<String>();
    println!("{}", result);
}