static void Main(String[] args) { int n = Convert.ToInt32(Console.ReadLine()); int m = Convert.ToInt32(Console.ReadLine()); int[][] grid = new int[n][]; for (int grid_i = 0; grid_i < n; grid_i++) { string[] grid_temp = Console.ReadLine().Split(' '); grid[grid_i] = Array.ConvertAll(grid_temp, Int32.Parse); } RegionCounter counter = new RegionCounter(grid, n, m); Console.Write(counter.Analize().ToString()); }
public static void Run(Input input, Output output) { byte numbersCount = Byte.Parse(input.ReadLine()); var numbers = input.ReadLine().Split(' ').Select(str => UInt64.Parse(str)).ToArray(); long regionsCount = 0; var counter = new RegionCounter(); int maxCombination = (int)1 << numbers.Length; for (int currCombination = 0; currCombination < maxCombination; currCombination++) { counter.Clear(); for (byte currBit = 0; currBit < numbers.Length; currBit++) { if ((currCombination & ((int)1 << currBit)) != 0) { counter.Add(numbers[currBit]); } } regionsCount += counter.GetRegionsCount(); } output.WriteLine(regionsCount.ToString()); }