| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- namespace D3._2
- {
- class Program
- {
- static void Main(string[] args)
- {
- if (args.Length < 1) return;
- if (File.Exists(args[0]) == false) return;
- var file = File.OpenText(args[0]);
- var fabric = new HashSet<string>[1000, 1000];
- do
- {
- var line = file.ReadLine();
- if (line == null) break;
- var n = line.Split("@")[0];
- var l = line.Split("@")[1];
- var xy = l.Split(":")[0];
- var wh = l.Split(":")[1];
- var x = int.Parse(xy.Split(",")[0]);
- var y = int.Parse(xy.Split(",")[1]);
- var w = int.Parse(wh.Split("x")[0]);
- var h = int.Parse(wh.Split("x")[1]);
- for (int i = x; i < x + w; i++)
- {
- for (int j = y; j < y + h; j++)
- {
- if (fabric[i, j] == null) fabric[i, j] = new HashSet<string>();
- fabric[i, j].Add(n);
- }
- }
- } while (true);
- Dictionary<string, bool> all = new Dictionary<string, bool>();
- for (int x = 0; x < 1000; x++)
- {
- for (int y = 0; y < 1000; y++)
- {
- if (fabric[x, y] == null) continue;
- var fl = fabric[x, y];
- if (fl.Count == 1 && all.ContainsKey(fl.FirstOrDefault()) == false)
- {
- all.Add(fl.FirstOrDefault(), true);
- }
- if (fl.Count == 1) continue;
- foreach (var f in fl)
- {
- if (all.ContainsKey(f) == false) all.Add(f, false);
- else all[f] = false;
- }
- }
- }
- Console.WriteLine(all.FirstOrDefault(a => a.Value == true));
- }
- }
- }
|