Loading...
arnold avatar arnold 50 Точки

Maximal Sum (C# Square Matrix)

60/100 чудно ми е къде е грешката, с входовете всичко си работи, но гърми в judge жестоко :D на два нулеви теста, логиката е за 3 x 3 square. Пробвах и с long, да не би да става много голямо числото, но пак 60/100. В условието не е упоменато, че е динамино намирането на квадрата, а  е статично като трябва да е точно 3 на 3.

https://pastebin.com/KvssBwaY

 

https://judge.softuni.org/Contests/Compete/Index/1455#2

 

Maximal Sum

Create a program that reads a rectangular integer matrix of size N x M and finds in it the square 3 x 3 that has maximal sum of its elements.

Input

  • On the first line, you will receive the rows N and columns M. On the next N lines you will receive each row with its columns

Output

  • Print the elements of the 3 x 3 square as a matrix, along with their sum

Examples

Input

Matrix

Output

4 5

1 5 5 2 4

2 1 4 14 3

3 7 11 2 8

4 8 12 16 4

Sum = 75

1 4 14

7 11 2

8 12 16

 

Тагове:
0
Module: C# Advanced 19/09/2021 12:48:40
Axiomatik avatar Axiomatik 2422 Точки

Just 2 corrections needed: 

using System;
using System.Linq;

namespace MaximalSum
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] matrixSize = Console.ReadLine().Split().Select(int.Parse).ToArray();

            int rowsLength = matrixSize[0];
            int colsLength = matrixSize[1];

            int[,] matrix = new int[rowsLength, colsLength];

            for (int row = 0; row < matrix.GetLength(0); row++)
            {
                // .Split(" ", StringSplitOptions.RemoveEmptyEntries) in order to pass second test
                int[] elements = Console.ReadLine()
                    .Split(" ", StringSplitOptions.RemoveEmptyEntries)
                    .Select(int.Parse)
                    .ToArray();

                for (int col = 0; col < matrix.GetLength(1); col++)
                {
                    matrix[row, col] = elements[col];
                }
            }

            int maxSquare3x3Sum = int.MinValue;
            int rowMaxIndex = 0;
            int colMaxIndex = 0;

            // matrix.GetLength(0) - 2
            for (int row = 0; row < matrix.GetLength(0) - 2; row++)
            {
                for (int col = 0; col < matrix.GetLength(1) - 2; col++)
                {
                    int currentSquareSum = matrix[row, col] + matrix[row, col + 1] + matrix[row, col + 2]
                        + matrix[row + 1, col] + matrix[row + 1, col + 1] + matrix[row + 1, col + 2]
                        + matrix[row + 2, col] + matrix[row + 2, col + 1] + matrix[row + 2, col + 2];

                    if (currentSquareSum > maxSquare3x3Sum)
                    {
                        maxSquare3x3Sum = currentSquareSum;
                        rowMaxIndex = row;
                        colMaxIndex = col;
                    }
                }
            }

            Console.WriteLine($"Sum = {maxSquare3x3Sum}");
            Console.WriteLine(matrix[rowMaxIndex, colMaxIndex] + " " + matrix[rowMaxIndex, colMaxIndex + 1] + " " + matrix[rowMaxIndex, colMaxIndex + 2]);
            Console.WriteLine(matrix[rowMaxIndex + 1, colMaxIndex] + " " + matrix[rowMaxIndex + 1, colMaxIndex + 1] + " " + matrix[rowMaxIndex + 1, colMaxIndex + 2]);
            Console.WriteLine(matrix[rowMaxIndex + 2, colMaxIndex] + " " + matrix[rowMaxIndex + 2, colMaxIndex + 1] + " " + matrix[rowMaxIndex + 2, colMaxIndex + 2]);
        }
    }
}

 

1
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.