Advertisement
yasenst

Untitled

Jun 30th, 2022
830
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.42 KB | None
  1. using System;
  2. using System.Linq;
  3.  
  4. namespace ProblemSolvingMethods
  5. {
  6.     class Program
  7.     {
  8.         static void Main(string[] args)
  9.         {
  10.             string[] dimensions = Console.ReadLine().Split(' ');
  11.             int totalRows = int.Parse(dimensions[0]);
  12.             int totalCols = int.Parse(dimensions[1]);
  13.  
  14.             long[,] matrix = new long[totalRows, totalCols];
  15.  
  16.             for (int row = 0; row < totalRows; row++)
  17.             {
  18.                 for (int col = 0; col < totalCols; col++)
  19.                 {
  20.                     matrix[row, col] = (long) Math.Pow(2, row + col);
  21.                 }
  22.             }
  23.  
  24.             int currentRow = 0;
  25.             int currentCol = 0;
  26.  
  27.             int rowDirection = 1; // +1 or -1
  28.             int colDirection = 1; // +1 or -1
  29.  
  30.             long result = matrix[currentRow, currentCol];
  31.  
  32.             /*if (totalRows == 1 || totalCols == 1)
  33.             {
  34.                 Console.WriteLine(result);
  35.                 return;
  36.             }*/
  37.  
  38.             bool isCornerHit = false;
  39.  
  40.             while (isCornerHit == false)
  41.             {
  42.                 int potentialNextRow = currentRow + rowDirection;
  43.                 int potentialNextCol = currentCol + colDirection;
  44.  
  45.                 if (potentialNextRow < 0)
  46.                 {
  47.                     // we should go down
  48.                     rowDirection = 1;
  49.                 }
  50.  
  51.                 if (potentialNextRow >= totalRows)
  52.                 {
  53.                     // we should go up
  54.                     rowDirection = -1;
  55.                 }
  56.  
  57.                 if (potentialNextCol < 0)
  58.                 {
  59.                     colDirection = 1;
  60.                 }
  61.  
  62.                 if (potentialNextCol >= totalCols)
  63.                 {
  64.                     colDirection = -1;
  65.                 }
  66.  
  67.                 currentRow += rowDirection;
  68.                 currentCol += colDirection;
  69.  
  70.                 result += matrix[currentRow, currentCol];
  71.  
  72.                 if ( (currentRow == 0 && currentCol == 0)  // top left
  73.                     || (currentRow == 0 && currentCol == totalCols - 1)
  74.                     || (currentCol == 0 && currentRow == totalRows - 1)
  75.                     || (currentCol == totalCols - 1 && currentRow == totalRows - 1))
  76.                 {
  77.                     isCornerHit = true;
  78.                 }      
  79.             }
  80.  
  81.             Console.WriteLine(result);
  82.         }
  83.     }
  84. }
  85.  
Advertisement
RAW Paste Data Copied
Advertisement