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