Advertisement
vvsvvs

Untitled

May 27th, 2022
684
139 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace Bombs
  7. {
  8.     class Bombs
  9.     {
  10.         static void Main(string[] args)
  11.         {
  12.             int n = int.Parse(Console.ReadLine());
  13.  
  14.             int[,] field = new int[n, n];
  15.  
  16.             for (int row = 0; row < field.GetLength(0); row++)
  17.             {
  18.                 int[] temp = Console.ReadLine().Split(' ', StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToArray();
  19.  
  20.                 for (int col = 0; col < field.GetLength(1); col++)
  21.                 {
  22.                     field[row, col] = temp[col];
  23.                 }                  
  24.             }
  25.             char[] separator = { ' ', ',' };
  26.             Queue<int> command = new Queue<int>(Console.ReadLine().Split(separator, StringSplitOptions.RemoveEmptyEntries).Select(int.Parse).ToArray());
  27.  
  28.             while (command.Count > 0)
  29.             {
  30.                 int row = command.Dequeue();
  31.                 int col = command.Dequeue();
  32.                 ExplodingBomb(field, row, col);
  33.             }
  34.  
  35.             int aliveCell = 0;
  36.             int sumAllive = 0;
  37.  
  38.             StringBuilder sb = new StringBuilder();
  39.                        
  40.             for (int row = 0; row < field.GetLength(0); row++)
  41.             {
  42.                 StringBuilder temp = new StringBuilder();
  43.                 for (int col = 0; col < field.GetLength(1); col++)
  44.                 {
  45.                     if (field[row, col] > 0)
  46.                     {
  47.                         aliveCell++;
  48.                         sumAllive += field[row, col];
  49.                     }
  50.  
  51.                     temp.Append($"{field[row, col]} ");
  52.                 }
  53.                 sb.AppendLine(temp.ToString().TrimEnd());
  54.             }
  55.  
  56.             sb.Insert(0, $"Sum: {sumAllive}\n");
  57.             sb.Insert(0, $"Alive cells: {aliveCell}\n");
  58.  
  59.             Console.WriteLine(sb.ToString());
  60.         }// static void Main(string[] args)
  61.  
  62.         static void ExplodingBomb(int[,] field, int row, int col)
  63.         {
  64.             if (ValidCoordinates(field.GetLength(0), field.GetLength(1), row, col) && (field[row, col] > 0))
  65.             {
  66.                 int bombPower = field[row, col];
  67.                 for (int r = row - 1; r <= row + 1; r++)
  68.                 {
  69.                     for (int c = col - 1; c <= col + 1; c++)
  70.                     {
  71.                         if (ValidCoordinates(field.GetLength(0), field.GetLength(1), r, c) && (field[r, c] > 0))
  72.                         {
  73.                             field[r, c] -= bombPower;
  74.                         }
  75.                     }
  76.                 }
  77.             }
  78.         }// void ExplodingBomb(int[,] field, int row, int col)
  79.  
  80.         static bool ValidCoordinates(int maxRow, int maxCol, int row, int col)
  81.         {
  82.             bool result = ((row >= 0) && (col >= 0));
  83.             result = ((result) && (row < maxRow) && (col < maxCol));
  84.             return result;
  85.         }// bool ValidCoordinates(int maxRow, int maxCol, int row, int col)
  86.  
  87.     }
  88. }
Advertisement
RAW Paste Data Copied
Advertisement