結果
| 問題 |
No.21 平均の差
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2019-09-10 14:51:28 |
| 言語 | Rust (1.83.0 + proconio) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 2,742 bytes |
| コンパイル時間 | 16,661 ms |
| コンパイル使用メモリ | 378,052 KB |
| 実行使用メモリ | 795,456 KB |
| 最終ジャッジ日時 | 2024-07-02 16:15:50 |
| 合計ジャッジ時間 | 16,857 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 1 WA * 1 MLE * 1 -- * 7 |
コンパイルメッセージ
warning: unnecessary trailing semicolon --> src/main.rs:59:26 | 59 | let average: f64;; | ^ help: remove this semicolon | = note: `#[warn(redundant_semicolons)]` on by default
ソースコード
fn getline() -> String {
let mut __ret = String::new();
std::io::stdin().read_line(&mut __ret).ok();
return __ret;
}
fn main() {
let n: i32 = getline().trim().parse().unwrap();
let k: i32 = getline().trim().parse().unwrap();
// println!("n:{}, k:{}", n, k);
// すべての数字を格納するnumbersを作成
let mut numbers = Vec::new();
for _ in 0.. n {
let number: i32 = getline().trim().parse().unwrap();
numbers.push(number);
}
// for i in 0..n {
// let ui = i as usize;
// println!("{}", numbers[ui]);
// }
// numbersを昇順にソート
numbers.sort();
// グループごとの数字の個数を求める
let mut number_per_group: i32 = 0; // グループごとの数字の個数
if n % k == 0 {
number_per_group = n / k;
} else if (n + 1) % k == 0 {
number_per_group = (n + 1) / k;
}
// println!("number_per_group : {}", number_per_group);
// 二次元Vectorを作成
let mut vectorvector: Vec<Vec<i32>> = Vec::new();
let mut group: Vec<i32> = Vec::new(); // グループ
let mut count = 0; // 値を格納するごとに++
while count < n {
for _ in 0..number_per_group {
group.push(numbers.remove(0));
count += 1;
if count == n {
break;
}
}
// vectorvector.push(group.clone());
let mut group_clone: Vec<i32> =Vec::new();
group_clone.clone_from(&group);
vectorvector.push(group_clone);
group.clear();
}
// println!("{:?}", vectorvector);
// 平均を格納するVectorを作成
let mut average_vector: Vec<f64> = Vec::new();
for i in 0..k {
let average: f64;;
let mut sum = 0.0;
let mut number_of_group_element = 0;
for v in &vectorvector[i as usize] {
sum += *v as f64;
number_of_group_element += 1;
}
average = sum / number_of_group_element as f64;
average_vector.push(average);
}
// println!("{:?}", average_vector);
// 最大の平均と最小の平均を求める
let average_vector_lastindex = average_vector.len() - 1;
let max_average = average_vector[average_vector_lastindex];
let min_average = average_vector[0];
// println!("max: {} min: {}", max_average, min_average);
// 平均の差を求める
let diff_average = max_average - min_average;
// println!("diff: {}", diff_average);
// println!("diff(ceil): {}", diff_average.ceil());
println!("{}", diff_average.ceil());
// TODO
// 動くが予想した値が得られないため, 修正すること
}