Advertisement
Guest User

Untitled

a guest
Feb 24th, 2017
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.28 KB | None | 0 0
  1. namespace _04.Files
  2. {
  3.     using System;
  4.     using System.Collections.Generic;
  5.     using System.Linq;
  6.     using System.Text.RegularExpressions;
  7.     class File
  8.     {
  9.         public string Name { get; set; }
  10.  
  11.         public string Extension { get; set; }
  12.  
  13.         public long Memory { get; set; }
  14.     }
  15.     class Program
  16.     {
  17.         static void Main(string[] args)
  18.         {
  19.             var filesCount = int.Parse(Console.ReadLine());
  20.             var roots = new Dictionary<string, List<File>>();
  21.             for (int i = 0; i < filesCount; i++)
  22.             {
  23.                 var file = new File();
  24.                 var path = Console.ReadLine().Trim();
  25.                 var items = path
  26.                     .Split(new[] { '\\', },
  27.                     StringSplitOptions.RemoveEmptyEntries)
  28.                     .ToList();
  29.                 var fileFullName = Regex.Match(items.Last(), @"([a-zA-Z0-9]+)\.([a-z]+)");
  30.                 var root = items.First();
  31.                 file.Name = fileFullName.Result("$1").ToString();
  32.                 file.Extension = fileFullName.Result("$2").ToString();
  33.                 file.Memory = long.Parse(items
  34.                     .Last()
  35.                     .Split(';')
  36.                     .Last());
  37.                 if (!roots.ContainsKey(root))
  38.                 {
  39.                     roots[root] = new List<File>();
  40.                     roots[root].Add(file);
  41.                 }
  42.                 else
  43.                 {
  44.                     bool exists = true;
  45.                     foreach (var item in roots[root])
  46.                     {
  47.                         if (item.Name == file.Name && item.Extension == file.Extension)
  48.                         {
  49.                             item.Memory = file.Memory;
  50.                             exists = true;
  51.                             continue;
  52.                         }
  53.                         else
  54.                         {
  55.                             exists = false;
  56.                         }
  57.                     }
  58.                     if (!exists)
  59.                     {
  60.                         roots[root].Add(file);
  61.                     }
  62.                 }
  63.             }
  64.             var query = Console.ReadLine()
  65.                 .Split(new[] { ' ' },
  66.                 StringSplitOptions.RemoveEmptyEntries);
  67.             var searchExtension = query[0];
  68.             var searchRoot = query[2];
  69.             var searchFiles = new HashSet<File>();
  70.             foreach (var root in roots)
  71.             {
  72.                 if (root.Key == searchRoot)
  73.                 {
  74.                     foreach (var file in root.Value)
  75.                     {
  76.                         if (file.Extension == searchExtension)
  77.                         {
  78.                             searchFiles.Add(file);
  79.                         }
  80.                     }
  81.                 }
  82.             }
  83.             if (searchFiles.Count != 0)
  84.             {
  85.                 foreach (var file in searchFiles
  86.                     .OrderByDescending(f => f.Memory)
  87.                     .ThenBy(f => f.Name))
  88.                 {
  89.                     Console.WriteLine($"{file.Name}.{file.Extension} - {file.Memory} KB");
  90.                 }
  91.             }
  92.             else
  93.             {
  94.                 Console.WriteLine("No");
  95.             }
  96.         }
  97.     }
  98. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement