結果
問題 |
No.3016 ハチマキおじさん
|
ユーザー |
![]() |
提出日時 | 2025-01-26 04:15:19 |
言語 | C# (.NET 8.0.404) |
結果 |
AC
|
実行時間 | 385 ms / 2,000 ms |
コード長 | 1,524 bytes |
コンパイル時間 | 9,801 ms |
コンパイル使用メモリ | 172,704 KB |
実行使用メモリ | 242,680 KB |
最終ジャッジ日時 | 2025-01-26 04:15:39 |
合計ジャッジ時間 | 19,367 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 31 |
コンパイルメッセージ
復元対象のプロジェクトを決定しています... /home/judge/data/code/main.csproj を復元しました (95 ミリ秒)。 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 string ReadLine() { return Console.ReadLine().Trim(); } static void Main() { int N = int.Parse(ReadLine()); int[] A = ReadLine().Split().Select(_ => int.Parse(_)).ToArray(); int[] B = ReadLine().Split().Select(_ => int.Parse(_)).ToArray(); A = A.OrderBy(_ => _).ToArray(); B = B.OrderBy(_ => _).ToArray(); Stack<int> stack = new Stack<int>(); long sum = 0; for (int i = N - 1; i >= 1; i--) { int v = Math.Abs(A[i] - B[i - 1]); stack.Push(v); sum += v; } //Console.WriteLine($"{A[0]} を外して {sum}"); List<Pair> pairs = new List<Pair>(); pairs.Add(new Pair(A[0], sum)); for (int i = 0; i < N - 1; i++) { int v = Math.Abs(A[i] - B[i]); sum -= stack.Pop(); sum += v; pairs.Add(new Pair(A[i + 1], sum)); //Console.WriteLine($"{A[i + 1]} を外して {sum}"); } long min = pairs.Min(_ => _.Sum); int[] rets = pairs.Where(_ => _.Sum == min).Select(_ => _.Value).Distinct().OrderBy(_ => _).ToArray(); Console.WriteLine(rets.Length); Console.WriteLine(string.Join(" ", rets)); } } class Pair { public Pair(int value, long sum) { Value = value; Sum = sum; } public int Value = 0; public long Sum = 0; }