Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace task2
- {
- class Program
- {
- static void Main()
- {
- int counter = 0;
- int n = 2;
- n = int.Parse(Console.ReadLine());
- char[,] board = new char[n,n];
- if (n <= 2)
- {
- Console.WriteLine(0);
- Environment.Exit(0);
- }
- //---------------------------------------populate the board
- for (int r = 0; r < n; r++)
- {
- string input = Console.ReadLine();
- for (int c = 0; c < n; c++)
- {
- board[r, c] = input[c];
- }
- }
- int[,] targets = new int[n,n];
- Func<int, int, bool> check = (row, col) =>
- {
- if (row < 0 || row >= n || col < 0 || col >= n || board[row,col] == '0')
- {
- return false;
- }
- return true;
- };
- Func<int, int, int> calcTargets = (r, c) =>
- {
- int tar = 0;
- if (check(r - 2, c - 1)) { tar++; }
- if (check(r - 2, c + 1)) { tar++; }
- if (check(r - 1, c - 2)) { tar++; }
- if (check(r - 1, c + 2)) { tar++; }
- if (check(r + 1, c - 2)) { tar++; }
- if (check(r + 1, c + 2)) { tar++; }
- if (check(r + 2, c - 1)) { tar++; }
- if (check(r + 2, c + 1)) { tar++; }
- return tar;
- };
- int maxTargets = 0;
- do
- {
- maxTargets = 0;
- for (int r = 0; r < n; r++)
- {
- for (int c = 0; c < n; c++)
- {
- if (board[r, c] == 'K')
- {
- int t = calcTargets(r, c);
- targets[r, c] = t;
- if(maxTargets < t)
- {
- maxTargets = t;
- }
- }
- }
- }
- //-----------------------------------------------------------check for max and remove it
- if (maxTargets == 0)
- {
- break;
- }
- for (int r = 0; r < n; r++)
- {
- bool removed = false;
- for (int c = 0; c < n; c++)
- {
- if (targets[r,c] == maxTargets)
- {
- board[r, c] = '0';
- targets[r, c] = 0;
- counter++;
- removed = true;
- break;
- }
- }
- if (removed)
- {
- break;
- }
- }
- } while (maxTargets != 0);
- Console.WriteLine(counter);
- }
- //-------------------------------------------------------------------
- //private static void PrintTargets(int[,] board)
- //{
- // Console.WriteLine("--target--");
- // for (int r = 0; r < board.GetLength(0); r++)
- // {
- // for (int c = 0; c < board.GetLength(1); c++)
- // {
- // Console.Write(board[r, c]);
- // }
- // Console.WriteLine();
- // }
- // Console.WriteLine();
- //}
- //private static void PrintBoard(char[,] board)
- //{
- // Console.WriteLine("--board--");
- // for (int r = 0; r < board.GetLength(0); r++)
- // {
- // for (int c = 0; c < board.GetLength(1); c++)
- // {
- // Console.Write(board[r, c]);
- // }
- // Console.WriteLine();
- // }
- //}
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement