結果

問題 No.873 バイナリ、ヤバいなり!w
ユーザー akakimidori
提出日時 2019-08-30 22:57:44
言語 Rust
(1.83.0 + proconio)
結果
WA  
(最新)
AC  
(最初)
実行時間 -
コード長 2,021 bytes
コンパイル時間 13,986 ms
コンパイル使用メモリ 400,928 KB
実行使用メモリ 6,948 KB
最終ジャッジ日時 2024-06-24 01:43:26
合計ジャッジ時間 16,271 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 3
other AC * 34 WA * 2
権限があれば一括ダウンロードができます

ソースコード

diff #
プレゼンテーションモードにする

fn run() {
let mut s = String::new();
std::io::stdin().read_line(&mut s).unwrap();
let n: usize = s.trim().parse().unwrap();
let mut dp = vec![(0, 0); n + 1];
for i in 1..=n {
let mut s = dp[i - 1];
s.0 += 1;
s.1 += 1;
let mut j = 2;
while j * j <= i {
let v = dp[i - j * j];
if s.0 > v.0 + j {
s = v;
s.0 += j;
} else if s.0 == v.0 + j && s.1 < v.1 {
s = v;
s.0 += j;
}
j += 1;
}
dp[i] = s;
}
let mut a = vec![];
let mut m = n;
while m > 0 {
if dp[m].1 > 0 {
a.push(1);
m -= 1;
continue;
}
let mut find = false;
let mut j = 3;
while j * j <= m && !find{
if dp[m - j * j].0 + j == dp[m].0 {
find = true;
m -= j * j;
a.push(j);
}
j += 2;
}
let mut j = 2;
while j * j <= m && !find {
if dp[m - j * j].0 + j == dp[m].0 {
find = true;
m -= j * j;
a.push(j);
}
j += 2;
}
}
a.sort_by(|a, b| {
if a % 2 == b % 2 {
if a % 2 == 1 {
a.cmp(&b)
} else {
b.cmp(&a)
}
} else if a % 2 == 1 {
std::cmp::Ordering::Less
} else {
std::cmp::Ordering::Greater
}
});
let mut ans = String::new();
let mut prev = '0';
for mut a in a {
ans.push(prev);
a -= 1;
while a > 1 {
ans.push(if prev == '1' {'0'} else {'1'});
ans.push(prev);
a -= 2;
}
if a > 0 {
ans.push(if prev == '1' {'0'} else {'1'});
prev = if prev == '1' {'0'} else {'1'};
}
}
println!("{}", ans);
}
fn main() {
run();
}
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
0