Advertisement
Guest User

Untitled

a guest
Mar 4th, 2017
212
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.61 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. class SurbianUnleashed
  8. {
  9.     static void Main()
  10.     {
  11.         string input = Console.ReadLine();
  12.         var result = new Dictionary<string, Dictionary<string, long>>();
  13.         var resultBackUp = new Dictionary<string, Dictionary<string, long>>();
  14.  
  15.         while (input != "End")
  16.         {
  17.             var separatedInput = input.Split(' ');
  18.  
  19.             if (separatedInput.Length >= 4)
  20.             {
  21.                 string singer = GetSinger(separatedInput);
  22.                 string venue = GetVenue(separatedInput);
  23.                 long ticketsPrice = long.Parse(separatedInput[separatedInput.Length - 2]);
  24.                 long ticketsCount = long.Parse(separatedInput[separatedInput.Length - 1]);
  25.                 resultBackUp = result;
  26.                 result = FillData(singer, venue, ticketsPrice, ticketsCount, resultBackUp);
  27.             }
  28.  
  29.             input = Console.ReadLine();
  30.         }
  31.  
  32.         foreach (var venue in result)
  33.         {
  34.             Console.WriteLine(venue.Key.TrimStart('@'));
  35.             foreach (var singer in venue.Value.OrderByDescending(n => n.Value))
  36.             {
  37.                 Console.WriteLine("#  {0} -> {1}", singer.Key, singer.Value);
  38.             }
  39.         }
  40.     }
  41.  
  42.     private static Dictionary<string, Dictionary<string, long>> FillData(string singer, string venue, long ticketsPrice, long ticketsCount,
  43.         Dictionary<string, Dictionary<string, long>> resultBackUp)
  44.     {
  45.         long money = ticketsCount * ticketsPrice;
  46.         if (!resultBackUp.ContainsKey(venue))
  47.         {
  48.             resultBackUp[venue] = new Dictionary<string, long>();
  49.             resultBackUp[venue].Add(singer, money);
  50.         }
  51.         else
  52.         {
  53.             if (!resultBackUp[venue].ContainsKey(singer))
  54.             {
  55.                 resultBackUp[venue].Add(singer, money);
  56.             }
  57.             else
  58.             {
  59.                 resultBackUp[venue][singer] += money;
  60.             }
  61.         }
  62.  
  63.         return resultBackUp;
  64.     }
  65.  
  66.  
  67.     private static string GetSinger(string[] separatedInput)
  68.     {
  69.         string singer = string.Empty;
  70.         for (int i = 0; i < separatedInput.Length; i++)
  71.         {
  72.             if (!separatedInput[i].StartsWith("@"))
  73.             {
  74.                 singer += separatedInput[i];
  75.                 singer += " ";
  76.             }
  77.             else
  78.             {
  79.                 singer = singer.TrimEnd(' ');
  80.                 return singer;
  81.             }
  82.         }
  83.         return singer;
  84.     }
  85.  
  86.     private static string GetVenue(string[] separatedInput)
  87.     {
  88.         for (int i = 0; i < separatedInput.Length; i++)
  89.         {
  90.             if (separatedInput[i].StartsWith("@"))
  91.             {
  92.                 for (int p = i + 1; p < separatedInput.Length - 2; p++)
  93.                 {
  94.                     if (!Char.IsDigit(separatedInput[p][0]))
  95.                     {
  96.                         if (!Char.IsDigit(separatedInput[p + 1][0]))
  97.                         {
  98.                             return separatedInput[i] + " " + separatedInput[p] + " " + separatedInput[p + 1];
  99.                         }
  100.                         else
  101.                         {
  102.                             return separatedInput[i] + " " + separatedInput[p];
  103.                         }
  104.                     }
  105.                     else
  106.                     {
  107.                         return separatedInput[i];
  108.                     }
  109.                 }
  110.                 return separatedInput[i];
  111.             }
  112.         }
  113.  
  114.         return "0";
  115.     }
  116. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement