using System; using System.Collections.Generic; using System.IO; using System.Linq; namespace D22._1 { public class Node { public int X { get; set; } public int Y { get; set; } public int Size { get; set; } public int Used { get; set; } public int Avail => Size - Used; public override bool Equals(object obj) => obj is Node node && X == node.X && Y == node.Y; public override int GetHashCode() => HashCode.Combine(X, Y); } class Program { static void Main(string[] args) { var contentList = File.ReadAllText(args[0]) .Split(new [] { "\n", "\r\n" }, StringSplitOptions.RemoveEmptyEntries) .Skip(2) .Select(s => s.Split(' ', StringSplitOptions.RemoveEmptyEntries)); var nodeList = new List(); foreach (var content in contentList) { var n = new Node(); n.X = int.Parse(content[0].Split("-")[1].Substring(1)); n.Y = int.Parse(content[0].Split("-")[2].Substring(1)); n.Size = int.Parse(content[1].TrimEnd('T')); n.Used = int.Parse(content[2].TrimEnd('T')); nodeList.Add(n); } var pairs = new HashSet<(Node, Node)>(); foreach (var p1 in nodeList) { foreach (var p2 in nodeList) { if (p1.Used == 0) continue; if (p1.Equals(p2)) continue; if (pairs.Contains((p2, p1))) continue; if (p1.Used > p2.Avail) continue; pairs.Add((p1, p2)); } } Console.WriteLine($"The answer is : {pairs.Count}"); } } }