結果
| 問題 |
No.437 cwwゲーム
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2018-10-11 20:03:57 |
| 言語 | Rust (1.83.0 + proconio) |
| 結果 |
AC
|
| 実行時間 | 2 ms / 2,000 ms |
| コード長 | 1,129 bytes |
| コンパイル時間 | 12,486 ms |
| コンパイル使用メモリ | 378,588 KB |
| 実行使用メモリ | 5,248 KB |
| 最終ジャッジ日時 | 2024-10-12 08:48:25 |
| 合計ジャッジ時間 | 13,860 ms |
|
ジャッジサーバーID (参考情報) |
judge5 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 41 |
ソースコード
#![allow(non_snake_case)]
use std::cmp;
use std::io::{ self };
fn cww(v: &[char]) -> i64 {
debug_assert_eq!(3, v.len());
let v: Vec<_> = v.iter().map(|c| c.to_digit(10).unwrap() as i64).collect();
if v[0] == 0 { return 0; }
if v[0] == v[1] { return 0; }
if v[1] != v[2] { return 0; }
100*v[0] + 10*v[1] + v[2]
}
fn f(S: &[char]) -> i64 {
if S.len() < 3 { return 0; }
let mut res = 0;
for i in 0..S.len() {
for j in i+1..S.len() {
for k in j+1..S.len() {
let v = [S[i], S[j], S[k]];
let vcww = cww(&v);
if vcww == 0 { continue; }
let t: Vec<_> = (0..S.len())
.filter(|&x| x != i && x != j && x != k)
.map(|x| S[x])
.collect();
let cur = vcww + f(&t);
res = cmp::max(res, cur);
}
}
}
res
}
fn main() {
let mut S = String::new();
io::stdin().read_line(&mut S).expect("i/o error");
let S: Vec<_> = S.trim().chars().collect();
let ans = f(&S);
println!("{}", ans);
}