Guest User

Untitled

a guest
Jan 3rd, 2021
1,995
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.88 KB | None | 0 0
  1. using System;
  2. using System.Linq;
  3. using System.Collections.Generic;
  4.  
  5. namespace Exam
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             var plantList = new Dictionary<string, int>();
  12.             var ratingList = new Dictionary<string, List<double>>();
  13.  
  14.             var counter = int.Parse(Console.ReadLine());
  15.  
  16.             for (int i = 0; i < counter; i++)
  17.             {
  18.                 var input = Console.ReadLine().Split("<->").ToArray();
  19.  
  20.                 var plant = input[0];
  21.                 var rarity = int.Parse(input[1]);
  22.  
  23.                 if (!plantList.ContainsKey(plant))
  24.                 {
  25.                     plantList.Add(plant, rarity);
  26.                     ratingList.Add(plant, new List<double>());
  27.                 }
  28.                 else
  29.                 {
  30.                     plantList[plant] = rarity;
  31.                 }
  32.             }
  33.  
  34.             while (true)
  35.             {
  36.                 var command = Console.ReadLine()
  37.                     .Split(":", StringSplitOptions.RemoveEmptyEntries).ToArray();
  38.  
  39.                 if (command[0] == "Exhibition")
  40.                 {
  41.                     break;
  42.                 }
  43.  
  44.                 var commandArgs = command[1].Trim()
  45.                     .Split("-", StringSplitOptions.RemoveEmptyEntries);
  46.  
  47.                 var plant = commandArgs[0].Trim();
  48.  
  49.                 if (!plantList.ContainsKey(plant))
  50.                 {
  51.                     Console.WriteLine("error");
  52.                     continue;
  53.                 }
  54.  
  55.                 switch (command[0])
  56.                 {
  57.                     case "Rate":
  58.                     {
  59.                         var rating = double.Parse(commandArgs[1].Trim());
  60.                         ratingList[plant].Add(rating);
  61.                         break;
  62.                     }
  63.                     case "Update":
  64.                     {
  65.                         var rarity = int.Parse(commandArgs[1].Trim());
  66.                         plantList[plant] = rarity;
  67.                         break;
  68.                     }
  69.                     case "Reset":
  70.                         ratingList[plant].Clear();
  71.                         break;
  72.                 }
  73.             }
  74.  
  75.             Console.WriteLine("Plants for the exhibition:");
  76.  
  77.             var sorted = plantList
  78.                 .OrderByDescending(x => x.Value)
  79.                 .ThenByDescending(x => ratingList[x.Key].Count > 0
  80.                     ? ratingList[x.Key].Sum() / ratingList[x.Key].Count
  81.                     : 0.0);
  82.             foreach (var (plant, rarity) in sorted)
  83.             {
  84.                 var averageRating = ratingList[plant].Count > 0
  85.                     ? ratingList[plant].Sum() / ratingList[plant].Count
  86.                     : 0.0;
  87.                 Console.WriteLine($"- {plant}; Rarity: {rarity}; Rating: {averageRating:F2}");
  88.             }
  89.         }
  90.     }
  91. }
  92.  
Advertisement
Add Comment
Please, Sign In to add comment