static void Main(string[] args) { var memory = new Dictionary <long, long>(); var mask = new Bitmask(); foreach (string line in File.ReadLines("input.txt")) { var data = line.Split(" = "); if (data[0] == "mask") { mask = Bitmask.FromString(data[1]); } else { var value = int.Parse(data[1]); var place = int.Parse(new String(data[0].Where(Char.IsDigit).ToArray())); foreach (var modifiedPlace in mask.Apply(place)) { memory[modifiedPlace] = value; } } } long sum = 0L; foreach (var entry in memory) { sum += entry.Value; } Console.WriteLine(sum); }