| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- 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<Node>();
- 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}");
- }
- }
- }
|