結果
問題 |
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)]; } } }