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(-100000, 100000, 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 = @" 1 2 100000 "; } public static void Main(string[] args) { #if DEBUG Reader.IsDebug = true; #endif Program prg = new Program(); prg.Proc(); } }