Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Linq;
- namespace SelfPreparationDSA2
- {
- public class Order: IComparable<Order>
- {
- public string Name { get; set; }
- public string Consumer { get; set; }
- public decimal Price { get; set; }
- public int CompareTo(Order other)
- {
- var result = this.Name.CompareTo(other.Name);
- if (result == 0)
- {
- result = this.Consumer.CompareTo(other.Consumer);
- if (result == 0)
- {
- result = this.Price.CompareTo(other.Price);
- }
- }
- return result;
- }
- }
- class Program
- {
- static void Main()
- {
- var NumberOfOrders = int.Parse(Console.ReadLine());
- var ResultInfo = new List<string>();
- var OrderByPrice = new SortedSet<Order>();
- var ConsumersList = new Dictionary<string, SortedSet<Order>>();
- for (int i = 0; i < NumberOfOrders; i++)
- {
- var currentOrder = Console.ReadLine();
- var splitOrder = currentOrder.Split();
- if (splitOrder[0] == "AddOrder")
- {
- ResultInfo.Add("Order added");
- currentOrder = currentOrder.Remove(0, 9);
- splitOrder = currentOrder.Split(';');
- var order = new Order()
- {
- Name = splitOrder[0],
- Price = decimal.Parse(splitOrder[1]),
- Consumer = splitOrder[2]
- };
- OrderByPrice.Add(order);
- if (ConsumersList.ContainsKey(order.Consumer))
- {
- ConsumersList[order.Consumer].Add(order);
- }
- else
- {
- ConsumersList[order.Consumer] = new SortedSet<Order> { order };
- }
- }
- if (splitOrder[0] == "DeleteOrders")
- {
- currentOrder = currentOrder.Remove(0, 13);
- if (ConsumersList.ContainsKey(currentOrder) && ConsumersList[currentOrder].Count != 0)
- {
- ResultInfo.Add($"{ConsumersList[currentOrder].Count} orders deleted");
- ConsumersList[currentOrder].Clear();
- OrderByPrice.RemoveWhere(x => x.Consumer == currentOrder);
- }
- else
- {
- ResultInfo.Add($"No orders found");
- }
- }
- if (splitOrder[0] == "FindOrdersByConsumer")
- {
- currentOrder = currentOrder.Remove(0, 21);
- if (ConsumersList.ContainsKey(currentOrder) && ConsumersList[currentOrder].Count != 0)
- {
- foreach (var item in ConsumersList[currentOrder])
- {
- ResultInfo.Add("{" + $"{item.Name};{item.Consumer};{item.Price:f2}" + "}");
- }
- }
- else
- {
- ResultInfo.Add("No orders found");
- }
- }
- if (splitOrder[0] == "FindOrdersByPriceRange")
- {
- currentOrder = currentOrder.Remove(0, 22);
- splitOrder = currentOrder.Split(';');
- var min = decimal.Parse(splitOrder[0]);
- var max = decimal.Parse(splitOrder[1]);
- var counter = 0;
- foreach (var item in OrderByPrice)
- {
- if (item.Price >= min && item.Price <= max)
- {
- ResultInfo.Add("{" + $"{item.Name};{item.Consumer};{item.Price:f2}" + "}");
- counter++;
- }
- }
- if (counter == 0)
- {
- ResultInfo.Add("No orders found");
- }
- }
- }
- foreach (var item in ResultInfo)
- {
- Console.WriteLine(item);
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement