Advertisement
Guest User

Untitled

a guest
Oct 12th, 2016
315
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.35 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. namespace SrabskoUnleashed
  8. {
  9.     class Program
  10.     {
  11.         static void Main(string[] args)
  12.         {
  13.             Dictionary<string, Dictionary<string, long>> singersDict = new Dictionary<string, Dictionary<string, long>>();
  14.  
  15.             string inputLine = Console.ReadLine();
  16.  
  17.             while (!inputLine.ToLower().Contains("end"))
  18.             {
  19.                 string[] inputArgs = inputLine.Split('@').ToArray();
  20.                 bool isInputValid = CheckInput(inputArgs);
  21.                 if (!isInputValid)
  22.                 {
  23.                     inputLine = Console.ReadLine();
  24.                     continue;
  25.                 }
  26.                 string[] concertArgs = GetConcertArgs(inputArgs);
  27.                 string singerName = concertArgs[0];
  28.                 string venue = concertArgs[1];
  29.                 int ticketsPrice = int.Parse(concertArgs[2]);
  30.                 int ticketsCount = int.Parse(concertArgs[3]);
  31.                 long totalProfit = ticketsCount * ticketsPrice;
  32.  
  33.                 if (!singersDict.ContainsKey(venue))
  34.                 {
  35.                     singersDict.Add(venue, new Dictionary<string, long>());
  36.                 }
  37.  
  38.                 if (!singersDict[venue].ContainsKey(singerName))
  39.                 {
  40.                     singersDict[venue].Add(singerName, 0);
  41.                 }
  42.                 singersDict[venue][singerName] += totalProfit;
  43.  
  44.                 inputLine = Console.ReadLine();
  45.             }
  46.             PrintOutput(singersDict);
  47.         }
  48.  
  49.         static void PrintOutput(Dictionary<string, Dictionary<string, long>> singersDict)
  50.         {
  51.             foreach (var venue in singersDict.Keys)
  52.             {
  53.                 Console.WriteLine(venue);
  54.                 foreach (var singer in singersDict[venue].OrderByDescending(x => x.Value))
  55.                 {
  56.                     Console.WriteLine($"#  {singer.Key} -> {singer.Value}");
  57.                 }
  58.             }
  59.         }
  60.  
  61.         private static string[] GetConcertArgs(string[] inputArgs)
  62.         {
  63.             string singerName = inputArgs[0].Trim();
  64.             string[] tempArray = inputArgs[1].Split().ToArray();
  65.             int ticketsCount = int.Parse(tempArray[tempArray.Length - 1]);
  66.             int ticketsPrice = int.Parse(tempArray[tempArray.Length - 2]);
  67.             string venue = string.Empty;
  68.             for (int i = 0; i < tempArray.Length - 2; i++)
  69.             {
  70.                 if (i == tempArray.Length - 3)
  71.                 {
  72.                     venue += tempArray[i];
  73.                     continue;
  74.                 }
  75.                 venue += tempArray[i] + " ";
  76.             }
  77.             string[] concertArgs = new string[4];
  78.             concertArgs[0] = singerName;
  79.             concertArgs[1] = venue;
  80.             concertArgs[2] = ticketsPrice.ToString();
  81.             concertArgs[3] = ticketsCount.ToString();
  82.  
  83.             return concertArgs;
  84.         }
  85.  
  86.         static bool CheckInput(string[] inputArgs)
  87.         {
  88.             string singerName = inputArgs[0];
  89.             string[] otherArgs = inputArgs[1].Split(' ').ToArray();
  90.             if (singerName.EndsWith(" ") && otherArgs.Length >= 3)
  91.             {
  92.                 return true;
  93.             }
  94.             return false;
  95.         }
  96.     }
  97. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement