結果
| 問題 |
No.275 中央値を求めよ
|
| ユーザー |
|
| 提出日時 | 2022-05-09 16:02:00 |
| 言語 | C# (.NET 8.0.404) |
| 結果 |
AC
|
| 実行時間 | 67 ms / 1,000 ms |
| コード長 | 1,025 bytes |
| コンパイル時間 | 10,966 ms |
| コンパイル使用メモリ | 171,552 KB |
| 実行使用メモリ | 187,588 KB |
| 最終ジャッジ日時 | 2024-07-16 14:08:22 |
| 合計ジャッジ時間 | 13,103 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 38 |
コンパイルメッセージ
復元対象のプロジェクトを決定しています... /home/judge/data/code/main.csproj を復元しました (83 ms)。 MSBuild のバージョン 17.9.6+a4ecab324 (.NET) main -> /home/judge/data/code/bin/Release/net8.0/main.dll main -> /home/judge/data/code/bin/Release/net8.0/publish/
ソースコード
using System;
using System.Collections.Generic;
using System.Linq;
class Program
{
static void Main(string[] args)
{
var count = Convert.ToInt32(Console.ReadLine());
var values = Console.ReadLine()
.Split(" ", count)
.Select(m => Convert.ToInt32(m))
.ToList();
Console.WriteLine(GetMedian(values));
}
static decimal GetMedian(List<int> numbers)
{
var sortedNumbers = numbers.OrderBy(m => m).ToList();
if (numbers.Count % 2 == 0)
{
// 偶数の場合は中央順位2個の算術平均
var medians = numbers.OrderBy(m => m).Skip(numbers.Count / 2 - 1).Take(2).ToList();
return Math.Round(((medians[0] + medians[1])) / 2m, 1, MidpointRounding.AwayFromZero);
}
else
{
// 奇数個の場合は中央順位のデータ
return numbers.OrderBy(m => m).ToList()[(numbers.Count / 2)];
}
}
}