結果
問題 | No.538 N.G.S. |
ユーザー |
![]() |
提出日時 | 2017-07-01 04:21:33 |
言語 | C#(csc) (csc 3.9.0) |
結果 |
AC
|
実行時間 | 34 ms / 2,000 ms |
コード長 | 2,055 bytes |
コンパイル時間 | 2,252 ms |
コンパイル使用メモリ | 115,356 KB |
実行使用メモリ | 27,856 KB |
最終ジャッジ日時 | 2024-09-25 00:04:11 |
合計ジャッジ時間 | 5,355 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 51 |
コンパイルメッセージ
Microsoft (R) Visual C# Compiler version 3.9.0-6.21124.20 (db94f4cc) Copyright (C) Microsoft Corporation. All rights reserved.
ソースコード
using System; using System.IO; using System.Linq; using System.Collections.Generic; using System.Text; public class Program { public void Proc() { int[] inpt = Reader.ReadLine().Split(' ').Select(a => int.Parse(a)).ToArray(); decimal mul = GetD(-1000000, 1000000, inpt); decimal d = inpt[2] - (inpt[1] * mul); decimal ans = Math.Round(inpt[2] * mul + d, 0, MidpointRounding.AwayFromZero); Console.WriteLine(ans.ToString("#0")); } private decimal GetD(decimal min, decimal max, int[] nums) { if(max-min<0.000000001m) { if(GetDiff(max,nums)==0) { return max; } else { return min; } } decimal mid1 = min + (max - min) / 3; decimal mid2 = min + (max - min) * 2 / 3; decimal[] vals = new decimal[4]; vals[0] = GetDiff(min, nums); vals[1] = GetDiff(mid1, nums); vals[2] = GetDiff(mid2, nums); vals[3] = GetDiff(max, nums); decimal minVals = vals.Min(); if(vals[0]==minVals) { return GetD(min, mid1, nums); } if(vals[1] == minVals) { return GetD(min, mid2, nums); } if(vals[2] == minVals) { return GetD(mid1, max, nums); } return GetD(mid2, max, nums); } private decimal GetDiff(decimal mul, int[] nums) { decimal tmp = nums[1] - (nums[0] * mul); return Math.Abs(nums[2] - (nums[1] * mul + tmp)); } public class Reader { private static StringReader sr; public static bool IsDebug = false; public static string ReadLine() { if (IsDebug) { if (sr == null) { sr = new StringReader(InputText.Trim()); } return sr.ReadLine(); } else { return Console.ReadLine(); } } private static string InputText = @" -100000 -99999 100000 "; } public static void Main(string[] args) { #if DEBUG Reader.IsDebug = true; #endif Program prg = new Program(); prg.Proc(); } }