Advertisement
DyNaMiXx7

Untitled

Mar 28th, 2019
103
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.21 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace _02Judge
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             var database = new Dictionary<string, Dictionary<string, int>>();
  12.             var individualStandings = new Dictionary<string, int>();
  13.  
  14.             string input = string.Empty;
  15.             while ((input = Console.ReadLine()) != "no more time")
  16.             {
  17.                 string[] tokens = input.Split(" -> ");
  18.                 string userName = tokens[0];
  19.                 string contest = tokens[1];
  20.                 int points = int.Parse(tokens[2]);
  21.  
  22.                 if (!database.ContainsKey(contest))
  23.                 {
  24.                     database.Add(contest, new Dictionary<string, int>());
  25.  
  26.                     database[contest].Add(userName, points);
  27.                     CalculateIndividualStandings(individualStandings, userName, points);
  28.                 }
  29.                 else
  30.                 {
  31.                     if (!database[contest].ContainsKey(userName))
  32.                     {
  33.                         database[contest].Add(userName, points);
  34.                         CalculateIndividualStandings(individualStandings, userName, points);
  35.                     }
  36.                     else
  37.                     {
  38.                         if (points > database[contest][userName])
  39.                         {
  40.                             database[contest][userName] = points;
  41.  
  42.                             if (!individualStandings.ContainsKey(userName))
  43.                             {
  44.                                 individualStandings.Add(userName, points);
  45.                             }
  46.                             else if (points > individualStandings[userName])
  47.                             {
  48.                                 individualStandings[userName] = points;
  49.                             }
  50.                         }
  51.                     }
  52.                 }
  53.             }
  54.  
  55.             int positionCounter = 0;
  56.             foreach (var item in database)
  57.             {
  58.                 Console.WriteLine($"{item.Key}: {item.Value.Count()} participants");
  59.  
  60.                 foreach (var subjects in item.Value.OrderByDescending(x => x.Value).ThenBy(x => x.Key))
  61.                 {
  62.                     positionCounter++;
  63.                     Console.WriteLine($"{positionCounter}. {subjects.Key} <::> {subjects.Value}");
  64.                 }
  65.  
  66.                 positionCounter = 0;
  67.             }
  68.  
  69.             Console.WriteLine("Individual standings: ");
  70.             foreach (var item in individualStandings.OrderByDescending(x => x.Value).ThenBy(x => x.Key))
  71.             {
  72.                 positionCounter++;
  73.                 Console.WriteLine($"{positionCounter}. {item.Key} -> {item.Value}");
  74.             }
  75.         }
  76.  
  77.         private static void CalculateIndividualStandings(Dictionary<string, int> individualStandings, string userName, int points)
  78.         {
  79.             if (!individualStandings.ContainsKey(userName))
  80.             {
  81.                 individualStandings.Add(userName, points);
  82.             }
  83.             else
  84.             {
  85.                 individualStandings[userName] += points;
  86.             }
  87.         }
  88.     }
  89. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement