Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- namespace Ranking
- {
- class Program
- {
- static void Main(string[] args)
- {
- string firstInput = Console.ReadLine();
- Dictionary<string, string> contestCollection = new Dictionary<string, string>();
- Dictionary<string, Dictionary<string, int>> submissions = new Dictionary<string, Dictionary<string, int>>();
- Dictionary<string, int> totalPointsCollection = new Dictionary<string, int>();
- while (firstInput != "end of contests")
- {
- string[] arguments = firstInput.Split(':');
- string contestName = arguments[0];
- string password = arguments[1];
- contestCollection.Add(contestName, password);
- firstInput = Console.ReadLine();
- }
- string secondInput = Console.ReadLine();
- while (secondInput != "end of submissions")
- {
- string[] argumentsOfSubmission = secondInput.Split("=>");
- string contest = argumentsOfSubmission[0];
- string password = argumentsOfSubmission[1];
- string user = argumentsOfSubmission[2];
- int points = int.Parse(argumentsOfSubmission[3]);
- if (contestCollection.ContainsKey(contest) && contestCollection.ContainsValue(password))
- {
- if (submissions.ContainsKey(user))
- {
- if (submissions[user].ContainsKey(contest))
- {
- if (submissions[user][contest] <= points)
- {
- submissions[user][contest] = points;
- }
- }
- else
- {
- submissions[user].Add(contest, points);
- totalPointsCollection[user] +=points;
- }
- }
- else
- {
- submissions.Add(user, new Dictionary<string, int>());
- totalPointsCollection.Add(user, points);
- submissions[user].Add(contest, points);
- }
- }
- secondInput = Console.ReadLine();
- }
- Console.WriteLine($"Best candidate is {totalPointsCollection.OrderByDescending(x => x.Value).First().Key} with total {totalPointsCollection.Values.Max()} points.");
- Console.WriteLine("Ranking:");
- foreach (var name in submissions.OrderBy(x=>x.Key))
- {
- Console.WriteLine(name.Key);
- foreach (var contestAndPoints in name.Value.OrderByDescending(x=>x.Value))
- {
- Console.WriteLine($"# {contestAndPoints.Key} -> {contestAndPoints.Value}");
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement