Двумерные массивы

231 задача
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.
Формат входных данных
В первой строке вводятся через пробел количество строк (1<=N<=20) и количество столбцов (1<=N<=20) двумерного массива.
Далее идет N строк по M элементов в строке - элементы двумерного массива. Все элементы двумерного массива по модулю не превышают  50.

Формат выходных данных
Вывести на экран элемент, расположенный в левом нижнем углу.
Формат входных данных
В первой строке вводятся через пробел количество строк (1<=N<=20) и количество столбцов M (M 1<=M<=20) двумерного массива.
Далее идет N строк по M элементов в строке - элементы двумерного массива. Все элементы двумерного массива по модулю не превышают  50.

Формат выходных данных
Вывести на экран элемент, расположенный в правом верхнем углу.
В настолькой игре "Пираты!" задача одного из игроков состоит в том, чтобы провести торговый корабль с ценным грузом через море, на островах которого базируются пираты.
Поле представляют собой прямоугольник, состоящий из квадратных клеток. Игрок может за один ход перейти в одну из четырех соседних по стороне клеток, не выходя при этом за пределы поля. Торговый корабль начинает свой путь в любой клетке самого левого столбца и должен попасть в любую клетку самого правого столбца игрового поля.
Пиратские базы расположены на островах, которые также занимают одну клетку игрового поля, их расположение известно.
Вася выяснил, что чем больше расстояние от пиратской базы, тем безопаснее маршрут. расстояние считается как количество ходов по клеткам от пиратских баз до каждой из клеток маршрута.
Помогите ему определить, на какое минимальное расстояние придјтся подойти к пиратской базе, двигаясь по самому безопасному маршруту.

Формат входных данных
В первой строке записано натуральные числа N и M (1 <= N, M <= 1 000 000)  количество строк и столбцов на игровом поле.
Во второй строке записано натуральное число K (1 <= K <= 500)  количество пиратских баз.
В следующих K строках записаны пары чисел Ri , Ci (1 <= Ri <= N, 1 <= Ci <= M)  координаты пиратских баз (строка, столбец).

Формат выходных данных
Выведите одно число  минимальное расстояние, на которое придется приближаться к пиратской базе на самом безопасном маршруте.
Система оценки
Решения, верно работающие при N, M 6<=500, будут набирать не менее половины баллов.
 
Ввод Вывод
10 10
4
2 2
5 3
5 9
8 8
3

Замечание
Пример одного из безопасных маршрутов показан на рисун ке. Пиратские базы обозначены чјрным, клетки маршрута серым. Минимальное расстояние от пиратской базы до маршрута 3 хода.

Джон Доу хочет построить крепкое здание, чтобы никто и никогда не нашел его. У него есть кирпичи 1х2, 1х3 и "уголки", то есть квадратики 2х2,  у которых отсутствует одна клетка. Для уточнения смотрите на рисунки.
Стеной назовем клеточный прямоугольник, который заполняют кирпичи. Кирпичи должны ложиться по линиям сетки, их можно как угодно поворачивать. Кирпичи не могут накладываться друг на друга и на каждой клетке должен лежать кирпич.
Джон считает стену крепкой, если нельзя провести такую прямую, что по обе стороны от нее есть кирпичи и она не пересекает ни одного кирпича. Касание кирпичей не считается пересечением. Вам требуется спроектировать крепкую стену, величиной NхM. Можно поворачивать кирпичи на углы, кратные 90 градусам.

Формат входных данных
Вводятся числа N и M  (1 <=N, M <= 100) высота и ширина требуемой стены.

Формат выходных данных
Выведите N строк, содержащих по M символов от «A» до «Z», описывающие стену. Каждый кирпич должен описываться одинаковыми символами (кирпичи, имеющие общую сторону должны описываться различными символами). Не должно существовать прямой, по обе стороны которой были бы кирпичи и она не пересекала бы ни один из кирпичей. Если стену с заданными ограничениями построить невозможно, выведите «impossible».
Частичные решения, работающие при N, M <=6 получат не менее 40 баллов.
2048#26981

В ожидании олимпиады школьники решили развлечься и поиграть в игру. Они вспомнили о своей любимой игре 2048, в которую постоянно играли на уроках. Ребята взяли лист бумаги и придумали себе развлечение на основе своей любимый игры. Правила в ней получились очень простыми. Ведущий загадывает какую-то позицию из игры 2048 и выписывает ее на лист. Игрок, который первым назовет наилучший ход, выигрывает. После нескольких раундов вы поняли, что выиграть по-честному у вас никак не выходит, поэтому вы решили пойти на хитрость и написать программу, решающую данную головоломку за вас.

Напомним правила игры 2048. На поле 4 × 4 разбросаны числа, являющиеся степенями двойки от 2 до 1024, некоторые клетки могут быть пустыми. Каждый ход игрок может сдвинуть все плитки игрового поля в одну сторону. Если при сдвиге две плитки одного номинала «налетают» одна на другую, то они слипаются в одну, номинал которой равен сумме соединившихся плиток. За каждое соединение игровые очки увеличиваются на номинал получившейся плитки. Плитка, получившаяся при слипании двух других, не может больше участвовать в слипании.


Входные данные

Программа получает на вход четыре строки, в каждой из которых записано четыре числа. Числа являются степенями двойки от 2 до 1024. В некоторых клетках записано число 0, означающий, что данная клетка пуста.
 

Выходные данные

Выведите единственное число — максимальное количество очков, которое можно получить за один ход из данной позиции.
 

 
Примеры
Входные данные Выходные данные
1
2 0 0 0
2 0 0 0
2 0 0 0
0 0 0 0
4
2
2 0 0 0
2 0 0 0
2 0 0 0
2 0 0 0
8
3
2 2 4 0
0 0 0 0
0 0 0 0
0 0 0 0
4
4
2 2 4 0
0 2 2 2
0 2 4 0
2 4 4 0
16

 

Примечания

Внимательно прочитайте этот раздел для лучшего понимания правил игры.

Наилучший ответ на первый тест достигается движением вниз. 
0 0 0 0
0 0 0 0
2 0 0 0
4 0 0 0

Наилучший ответ на второй тест достигается движением вниз. 
0 0 0 0
0 0 0 0
4 0 0 0
4 0 0 0

Наилучший ответ на третий тест достигается движением влево. 
4 4 0 0
0 0 0 0
0 0 0 0
0 0 0 0

Наилучший ответ на четвертый тест достигается движением вниз. 
0 0 0 0
0 2 4 0
0 4 2 0
4 4 8 2

Дан двумерный массив размером nxn (n<=10). Сформировать одномерный массив из элементов заданного массива, расположенных под побочной диагональю.


Входные данные 
Программа получает на вход число n <= 10, являющееся числом строк и столбцов в массиве. Далее во входном потоке идет n строк по n чисел, являющихся элементами массива.
 

Выходные данные 
Программа должна вывести одномерный массив, элементами которого являются значения элементов двумерного массива (через пробел), расположенные ПОД побочной диагональю.
 

 
Примеры
Входные данные Выходные данные
1
3
888 29 37 
92 888 57 
73 75 888
57 75 888
Дан двумерный массив размером nxn (n<=10). Сформировать одномерный массив из элементов заданного массива, расположенных под главной диагональю.


Входные данные 
Программа получает на вход число n <= 10, являющееся числом строк и столбцов в массиве. Далее во входном потоке идет n строк по n чисел, являющихся элементами массива.
 

Выходные данные 
Программа должна вывести одномерный массив, элементами которого являются значения элементов двумерного массива (через пробел), расположенные ПОД главной диагональю.

 
Примеры
Входные данные Выходные данные
1
3
888 29 37 
92 888 57 
73 75 888 
92 73 75
Дан двумерный массив размером nxn (n<=10). Сформировать одномерный массив из элементов заданного массива, расположенных над побочной диагональю.


Входные данные 
Программа получает на вход число n <= 10, являющееся числом строк и столбцов в массиве. Далее во входном потоке идет n строк по n чисел, являющихся элементами массива.


Выходные данные 
Программа должна вывести одномерный массив, элементами которого являются значения элементов двумерного массива (через пробел), расположенные НАД побочной диагональю.  

 
Примеры
Входные данные Выходные данные
1
3
888 29 37 
92 888 57 
73 75 888 
888 29 92
Дан двумерный массив размером nxn (n<=10). Сформировать одномерный массив из элементов заданного массива, расположенных над главной диагональю.


Входные данные 
Программа получает на вход число n <= 10, являющееся числом строк и столбцов в массиве. Далее во входном потоке идет n строк по n чисел, являющихся элементами массива.


Выходные данные
 
Программа должна вывести одномерный массив, элементами которого являются значения элементов двумерного массива (через пробел), расположенные НАД главной диагональю.

 
Примеры
Входные данные Выходные данные
1
3
888 29 37 
92 888 57 
73 75 888  
29 37 57
Недавно в солнечный весенний день директору Летней Флатландской Компьютерной Школы (ЛФКШ) Сергею Александровичу пришла в голову идея организовать первую флатландскую конференцию для школьников по программированию. Теперь перед ним стоит задача выбрать место проведения. 

Флатландия представляет собой прямоугольник из m строк и n столбцов, в каждой из клеток которого расположен один город? Сергей Александрович уже посчитал для каждого города количество желающих принять участие в конференции. Известно, что флатландцы не любят далеко ездить, так что в каком бы городе она проводилась,  в конференции смогут принять участие только школьники из самого города и соседних с ним по стороне городов. Формально говоря, если конференция проводится в городе, находящемся в i-ой строке и j-ом столбце, то в этой конференции будут участвовать школьники из городов (i, j), (i − 1, j) ( при условии, что i > 1) ,  (i + 1, j) (при условии, что i < m), (i, j − 1) (при условии, что j > 1) , и (i, j + 1) , (при условии, что j < n).
Сейчас Сергей Александрович хочет понять,  в каких городах возможно поселить всех приезжих участников.  Пока он выясняет количество доступных мест в гостиницах Флатландии, вам предстоит посчитать для каждого из возможных городов проведения, скольким школьникам потребуется предоставить жиль на время конференции.
Обратите внимание на то, что школьникам, живущим в том же городе, в котором проводится конференция, поселение не нужно.

Формат входных данных
В первой строке записаны два числа m и n (1 <= m, n <= 350) - размеры Флатландии. В каждой из последующих m строк содержатся по n чисел.
В i-ой стоке и j-ом столбце содержится число ai,j ( 0<=  ai,j  <=10000)  -  количество школьников из города (i, j),  желающих принять участие в конференции.
Формат выходных данных
Выведите m строк по n чисел в каждой. Число в строке с номером i и стобце с номером j должно равняться количеству приезжих участников конференции, если местом проведения будет
выбран город, с координатами (i, j).
 
Ввод Вывод
3 4
1 0 3 2
5 6 1 2
1 1 0 11
5 10 3 5
8 7 11 14
6 7 13 2
1 1
5
0
23073#23073
Дано натуральное число N (N<=15). Заполните и выведите на экран квадратный двумерный массив размером NxN по следующему правилу:
1 2 3 4 5 6 
2 3 4 5 6 1 
3 4 5 6 1 2 
4 5 6 1 2 3 
5 6 1 2 3 4 
6 1 2 3 4 5
Каждый элемент массива отделяется от другого одним пробелом, каждая строка массива выводится с новой строки
Пример входных и выходных данных
№ теста Входные данные Выходные данные
1 6
1 2 3 4 5 6 
2 3 4 5 6 1 
3 4 5 6 1 2 
4 5 6 1 2 3 
5 6 1 2 3 4 
6 1 2 3 4 5
 
 

23072#23072
Дано натуральное число N (N<=15). Заполните и выведите на экран квадратный двумерный массив размером NxN по следующему правилу:
1 1 1 1 1 1
1 2 3 4 5 6
1 3 6 10 15 21
1 4 10 20 35 56
1 5 15 35 70 126
1 6 21 56 126 252
 
 
Каждый элемент массива отделяется от другого одним пробелом, каждая строка массива выводится с новой строки
Пример входных и выходных данных
№ теста Входные данные Выходные данные
1 6 1 1 1 1 1 1
1 2 3 4 5 6
1 3 6 10 15 21
1 4 10 20 35 56
1 5 15 35 70 126
1 6 21 56 126 252
 

Однажды царь решил вознаградить одного из своих мудрецов за хорошую работу. Он привел его в прямоугольную комнату размром NxM, в каждой клетке которой лежало несколько килограммов золота. Царь разрешил мудрецу сделать обойти несколько клеток (переходя с клетки, где сейчас находится мудрец, в одну из четырех с ней соседних), и собрать все золото, которое попадется на его пути.
Мудрецу разрешено более одного раза проходить по одной и той же клетке. Золото с нее он берет при этом  только один раз - когда проходит по клетке в первый раз.

Вам дан маршрут мудреца. Требуется определить, сколько килограммов золота он собрал.

Входные данные
Входные данные содержат план комнаты и маршрут мудреца. Сначала записано количество строк N, затем - количество столбцов M (1<=N<=20,1<=M<=20).
Затем записано N строк по M чисел в каждой - количество килограммов золота, которое лежит в данной клетке (число от 0 до 50).
Далее записано число X - сколько клеток обошел мудрец (1<=X<=10000).
Известно, что мудрец начал с клетки с координатами (1, 1). Далее записано X-1 число: куда перемещался мудрец:
  • число 1 обозначает, что мудрец делал шаг вправо,
  • число 2 обозначает, что мудрец делал шаг вверх,
  • число 3 обозначает, что мудрец делал шаг влево,
  • число 4 обозначает, что мудрец делал шаг вниз.
 
Известно, что мудрец не выходил из лабиринта, при этом он мог через одну и ту же клетку пройти несколько раз. 

Выходные данные
В выходной файл выведите количество килограммов золота, которое собрал мудрец.
 
Примеры
Входные данные Выходные данные
1
3 4
1 2 3 4
5 6 7 8
9 10 11 12
9
4 1 1 2 3 3 1 4
24
 
 
В матрице найти номер строки, сумма чисел в которой максимальна.
 
Входные данные
Во входном файле записаны числа N и M - количество строк и столбцов матрицы (каждое из них - из диапазона от 1 до 100), 
а затем сама матрица. Элементы матрицы - числа из целые числа, по модулю не превышающие 106.
 
Выходные данные
В выходной файл вывести номер строки,  сумма чисел в которой максимальна. Если таких строк несколько, 
вывести первую из них.
 
В массиве требуется найти минимальный элемент, и поставить его  на первое место, а то, что стояло на 1-м месте - на его место.
Если минимальных чисел несколько, то надо менять с первым из них.  Если минимальное число уже стоит на 1-м месте, ничего изменять не нужно.
 
Входные данные
Вводится число N - количество элементов массива (1<=N<=100),  а затем - элементы массива (числа от 1 до 10000). 
 
Выходные данные
Требуется вывести N чисел - элементы массива после перестановки.
 
Примеры
Входные данные Выходные данные
1
5
3 5 4 1 4
1 5 4 3 4
 
Пете и Васе стало очень скучно на уроке биологии, и они решили поиграть в любимую всеми школьниками игру в крестики-нолики до пяти в ряд на бесконечном поле.
Рассмотрим кратко правила игры. Игра происходит на бесконечном клетчатом поле, два игрока делают ходы по очереди, первый игрок ходит крестиками, а второй — ноликами. В свой ход игрок
выбирает свободную клетку поля и ставит туда свой символ. Если после хода очередного игрока на поле есть пять его символов подряд по вертикали, горизонтали или диагонали, то сделавший такой ход игрок объявляется победителем и игра заканчивается.
Петя и Вася уже довольно долго играют в игру. Сейчас должен ходить Петя, который играет крестиками. Петя надеется побыстрее завершить игру и хочет выиграть не более чем за два, а лучше
за один ход. Петя называет ход оптимальным, если для этого хода выполнено одно из двух:
• этот ход приводит к немедленной победе Пети;
• не существует хода, который приводит к немедленной победе Пети, но если Петя сделает этот ход, то Вася не выиграет следующим ходом и, вне зависимости от ответного хода Васи, у Пети
будет следующий ход, который приведет к его немедленной победе.
Помогите Пете найти количество оптимальных ходов.
Формат входных данных
В первой входного файла находятся два натуральных числа n, m (1 ≤ n,m ≤ 200) — размеры прямоугольника, содержащего все уже поставленные на поле крестики и нолики.
Следующие n строк содержат по m символов, каждый из которых равен одному из следующих:
«.» (точка), «X» (заглавная латинская буква «икс») или «0» (ноль). При этом «.» обозначает пустую клетку, «X» обозначает крестик, а «0» обозначает нолик. Гарантируется, что на поле находится
равное число крестиков и ноликов, и ни один игрок еще не одержал победу.
Формат выходных данных
Выведите одно число — количество оптимальных ходов Пети.
 
Примеры
Входные данные Выходные данные
1
5 3
...
000
XXX
...
...
2
2
4 4
..0.
.XX0
.0X.
....
0
3
5 6
......
.XXX..
.0000.
..X...
......
0
 
20245#20245
В метании молота состязается n спортcменов. Каждый из них сделал m бросков. Побеждает спортсмен, у которого максимален наилучший бросок. Если таких несколько, то из них побеждает тот, у которого наилучшая сумма результатов по всем попыткам. Если и таких несколько, победителем считается спортсмен с минимальным номером. Определите номер победителя соревнований.

Формат входных данных

Программа получает на вход два числа n и m (20<=n,m<=20), являющиеся числом строк и столбцов в массиве. Далее во входном потоке идет n строк по m чисел, являющихся элементами массива.

Формат выходных данных

Программа должна вывести одно число - номер победителя соревнований. Не забудьте, что  строки  (спортсмены) нумеруются с 0.

Пример

Ввод

Вывод

 4 3
 8 8 8
 5 9 3
 9 4 7
 6 6 2
2 
 

Однажды царь решил вознаградить одного из своих мудрецов за хорошую работу. Он привел его в прямоугольную комнату размром NxM, в каждой клетке которой лежало несколько килограммов золота. Царь разрешил мудрецу сделать обойти несколько клеток (переходя с клетки, где сейчас находится мудрец, в одну из четырех с ней соседних), и собрать все золото, которое попадется на его пути.
Мудрецу разрешено более одного раза проходить по одной и той же клетке. Золото с нее он берет при этом  только один раз - когда проходит по клетке в первый раз.

Вам дан маршрут мудреца. Требуется определить, сколько килограммов золота он собрал.

Входные данные
Входные данные содержат план комнаты и маршрут мудреца. Сначала записано количество строк N, затем - количество столбцов M (1<=N<=20,1<=M<=20).
Затем записано N строк по M чисел в каждой - количество килограммов золота, которое лежит в данной клетке (число от 0 до 50).
Далее записано число X - сколько клеток обошел мудрец. Далее записаны координаты этих клеток (координаты клетки - это два числа: первое определяет номер строки, второе - номер столбца, верхняя левая клетка на плане имеет координаты (1,1), правая нижняя - (N,M)). 
Число пройденных мудрецом клеток не превышает 10000.

Выходные данные
В выходной файл выведите количество килограммов золота, которое собрал мудрец.
 
Примеры
Входные данные Выходные данные
1
3 4
1 2 3 4
5 6 7 8
9 10 11 12
9
1 1
2 1
2 2
2 3
1 3
1 2
1 1
1 2
2 2
24

 
Однажды царь решил вознаградить одного из своих мудрецов за хорошую работу. Он привел его в прямоугольную комнату размром NxM, в каждой клетке которой лежало несколько килограммов золота. Царь разрешил мудрецу сделать обойти несколько клеток (переходя с клетки, где сейчас находится мудрец, в одну из четырех с ней соседних), и собрать все золото, которое попадется на его пути.
 
Вам дан маршрут мудреца. Требуется определить, сколько килограммов золота он собрал.
 
Входные данные
Входные данные содержат план комнаты и маршрут мудреца. Сначала записано количество строк N, затем - количество столбцов M (1<=N<=20,1<=M<=20).
Затем записано N строк по M чисел в каждой - количество килограммов золота, которое лежит в данной клетке (число от 0 до 50).
Далее записано число X - сколько клеток обошел мудрец. Далее записаны координаты этих клеток (координаты клетки - это два числа: первое определяет номер строки, второе - номер столбца, верхняя левая клетка на плане имеет координаты (1,1), правая нижняя - (N,M)).
Гарантируется, что мудрец не проходил по одной и той же клетке дважды.
 
Выходные данные
В выходной файл выведите количество килограммов золота, которое собрал мудрец.
 
Примеры
Входные данные Выходные данные
1
3 4
1 2 3 4
5 6 7 8
9 10 11 12
5
1 1
2 1
2 2
2 3
1 3
22
 
Даны две квадратных таблицы чисел. Требуется построить третью, 
каждый элемент которой равен сумме элементов, стоящих на том же месте
в 1-й и 2-й таблицах.
 
Входные данные
Во входном файле записано сначала число N, затем записана первая таблица,
а после нее - вторая. Элементы таблиц - числа от 0 до 100. 
1<=N<=100.
 
Выходные данные
В выходной файл выведите результирующую таблицу.
 
Пример входного файла
3
1 2 3
4 5 6
7 8 9
 
11 12 13
14 15 16
17 18 19
 
Пример выходного файла
12 14 16
18 20 22
24 26 28
 
Поделиться
Класснуть