Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- class SurbianUnleashed
- {
- static void Main()
- {
- string input = Console.ReadLine();
- var result = new Dictionary<string, Dictionary<string, long>>();
- var resultBackUp = new Dictionary<string, Dictionary<string, long>>();
- while (input != "End")
- {
- var separatedInput = input.Split(' ');
- if (separatedInput.Length >= 4)
- {
- string singer = GetSinger(separatedInput);
- string venue = GetVenue(separatedInput);
- long ticketsPrice = long.Parse(separatedInput[separatedInput.Length - 2]);
- long ticketsCount = long.Parse(separatedInput[separatedInput.Length - 1]);
- resultBackUp = result;
- result = FillData(singer, venue, ticketsPrice, ticketsCount, resultBackUp);
- }
- input = Console.ReadLine();
- }
- foreach (var venue in result)
- {
- Console.WriteLine(venue.Key.TrimStart('@'));
- foreach (var singer in venue.Value.OrderByDescending(n => n.Value))
- {
- Console.WriteLine("# {0} -> {1}", singer.Key, singer.Value);
- }
- }
- }
- private static Dictionary<string, Dictionary<string, long>> FillData(string singer, string venue, long ticketsPrice, long ticketsCount,
- Dictionary<string, Dictionary<string, long>> resultBackUp)
- {
- long money = ticketsCount * ticketsPrice;
- if (!resultBackUp.ContainsKey(venue))
- {
- resultBackUp[venue] = new Dictionary<string, long>();
- resultBackUp[venue].Add(singer, money);
- }
- else
- {
- if (!resultBackUp[venue].ContainsKey(singer))
- {
- resultBackUp[venue].Add(singer, money);
- }
- else
- {
- resultBackUp[venue][singer] += money;
- }
- }
- return resultBackUp;
- }
- private static string GetSinger(string[] separatedInput)
- {
- string singer = string.Empty;
- for (int i = 0; i < separatedInput.Length; i++)
- {
- if (!separatedInput[i].StartsWith("@"))
- {
- singer += separatedInput[i];
- singer += " ";
- }
- else
- {
- singer = singer.TrimEnd(' ');
- return singer;
- }
- }
- return singer;
- }
- private static string GetVenue(string[] separatedInput)
- {
- for (int i = 0; i < separatedInput.Length; i++)
- {
- if (separatedInput[i].StartsWith("@"))
- {
- for (int p = i + 1; p < separatedInput.Length - 2; p++)
- {
- if (!Char.IsDigit(separatedInput[p][0]))
- {
- if (!Char.IsDigit(separatedInput[p + 1][0]))
- {
- return separatedInput[i] + " " + separatedInput[p] + " " + separatedInput[p + 1];
- }
- else
- {
- return separatedInput[i] + " " + separatedInput[p];
- }
- }
- else
- {
- return separatedInput[i];
- }
- }
- return separatedInput[i];
- }
- }
- return "0";
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement