public void AddParkingSpace(ParkingSpace parkingSpace) { if (this.BestParkingSpace == null || parkingSpace.DistanceFromTarget < this.BestParkingSpace.DistanceFromTarget) { this.BestParkingSpace = parkingSpace; } }
public static void Main() { int zonesCount = int.Parse(Console.ReadLine()); List <Zone> zones = new List <Zone>(); for (int i = 0; i < zonesCount; i++) { string[] tokens = Console.ReadLine().Split(':'); string name = tokens[0]; string[] parameters = tokens[1].Split(','); uint x = uint.Parse(parameters[0]); uint y = uint.Parse(parameters[1]); uint width = uint.Parse(parameters[2]); uint height = uint.Parse(parameters[3]); double price = double.Parse(parameters[4]); zones.Add(new Zone(name, x, y, width, height, price)); } string[] parkSpaces = Console.ReadLine().Split(';'); string[] targetTokens = Console.ReadLine().Split(','); uint targetX = uint.Parse(targetTokens[0]); uint targetY = uint.Parse(targetTokens[1]); uint timeConstant = uint.Parse(Console.ReadLine()); for (int i = 0; i < parkSpaces.Length; i++) { string[] tokens = parkSpaces[i].Split(','); uint x = uint.Parse(tokens[0]); uint y = uint.Parse(tokens[1]); ParkingSpace space = new ParkingSpace(x, y, targetX, targetY); for (int j = 0; j < zones.Count; j++) { if (x >= zones[j].MinX && x < zones[j].MaxX && y >= zones[j].MinY && y < zones[j].MaxY) { zones[j].AddParkingSpace(space); break; } } } ParkingSpace bestParkingSpace = null; decimal totalPrice = Decimal.MaxValue; uint totalTime = int.MaxValue; string zoneName = string.Empty; for (int i = 0; i < zones.Count; i++) { ParkingSpace currentBest = zones[i].BestParkingSpace; if (currentBest != null) { uint currentTime = currentBest.DistanceFromTarget * 2 * timeConstant; uint timeInMins = currentTime % 60 == 0 ? currentTime / 60 : currentTime / 60 + 1; decimal currentPrice = timeInMins * (decimal)zones[i].PricePerMin; if (currentPrice < totalPrice || (currentPrice == totalPrice && currentTime < totalTime)) { totalTime = currentTime; totalPrice = currentPrice; bestParkingSpace = currentBest; zoneName = zones[i].Name; } } } Console.WriteLine("Zone Type: {0}; X: {1}; Y: {2}; Price: {3:F2}", zoneName, bestParkingSpace.X, bestParkingSpace.Y, totalPrice); }