Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- namespace _04PRoblem
- {
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Runtime.CompilerServices;
- using System.Text.RegularExpressions;
- public class Program
- {
- public static void Main(string[] args)
- {
- List<Region> regions=new List<Region>();
- string pattern = @"Grow <([A-Z]{1}[a-z]+)> <([a-zA-Z0-9]+)> ([0-9]+)";
- Regex regex=new Regex(pattern);
- while (true)
- {
- var inputLine = Console.ReadLine();
- if (inputLine == "Icarus, Ignite!")
- {
- break;
- }
- Match match = regex.Match(inputLine);
- if (match.Groups.Count ==4)
- {
- string regionName = match.Groups[1].Value;
- string flowerName = match.Groups[2].Value;
- long amount = long.Parse(match.Groups[3].Value);
- if (amount<=int.MaxValue && amount>0) {
- var existRegion = regions.FindIndex(r => r.Name == regionName);
- if (existRegion == -1)
- {
- regions.Add(new Region(regionName));
- var currentRegion = regions.First(r => r.Name == regionName);
- var newFlower = new Flower(flowerName, amount);
- currentRegion.Flowers.Add(newFlower);
- currentRegion.TotalFlowers += amount;
- }
- else
- {
- var currentRegion = regions.First(r => r.Name == regionName);
- var existFlower = currentRegion.Flowers.FindIndex(f => f.Name == flowerName);
- if (existFlower == -1)
- {
- var newFlower = new Flower(flowerName, amount);
- currentRegion.Flowers.Add(newFlower);
- currentRegion.TotalFlowers += amount;
- }
- else
- {
- var currentFlower = currentRegion.Flowers.First(f => f.Name == flowerName);
- currentFlower.Amount += amount;
- currentRegion.TotalFlowers += amount;
- }
- }
- }
- }
- }
- var newList = regions.OrderByDescending(r => r.TotalFlowers).ThenBy(r => r.Name).ToList();
- foreach (var region in newList)
- {
- var sortedFlowers = region.Flowers.OrderBy(f => f.Amount).ThenBy(f => f.Name);
- Console.WriteLine(region.Name);
- foreach (var flower in sortedFlowers)
- {
- Console.WriteLine("*--{0} | {1}",flower.Name,flower.Amount);
- }
- }
- }
- }
- public class Region
- {
- public Region(string name)
- {
- this.Name = name;
- this.Flowers=new List<Flower>();
- }
- public string Name { get; set; }
- public List<Flower> Flowers { get; set; }
- public long TotalFlowers { get; set; }
- }
- public class Flower
- {
- public Flower(string name,long amount)
- {
- this.Name = name;
- this.Amount = amount;
- }
- public string Name { get; set; }
- public long Amount { get; set; }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement