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

231 задача
Число у задачи — рейтинг сложности, слово рядом — насколько она трудна по сравнению с другими задачами такого же типа. Шкалы задач с ответом и задач с кодом между собой не сравниваются. Рядом — счётчики попыток: успешные, неуспешные.

Напишите программу, которая сортирует двумерный массив целых чисел. При этом самое маленькое число должно оказаться в первом элементе первой строки, а самое большое в последнем элементе последней строки.


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

В первой строке записаны через пробел размеры двумерного массива: количество строк N и количество столбцов M ( 1 <= N , M <= 100 ). В следующих N строках записаны строки двумерного массива, в каждой – по M натуральных чисел, разделённых пробелами. 
 

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

Программа должна вывести отсортированный двумерный массив.
 

Примеры
Входные данные Выходные данные
1
5 7
13 5 1 8 4 14 5 
5 13 10 9 3 7 7 
3 3 9 6 3 7 5 
10 8 11 2 1 1 13 
1 12 13 15 9 11 4 
1 1 1 1 2 3 3 
3 3 4 4 5 5 5 
5 6 7 7 7 8 8 
9 9 9 10 10 11 11 
12 13 13 13 13 14 15 

Напишите программу, которая переставляет элементы квадратной матрицы, расположенные на побочной диагонали, в порядке убывания, начиная с правого верхнего угла. Остальные элементы матрицы должны остаться на своих местах.
 

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

В первой строке записано одно число N размер квадратной матрицы ( 1 <= N <= 100 ). В следующих N строках записаны строки матрицы, в каждой – по N натуральных чисел, разделённых пробелами. 
 

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

Программа должна вывести получившуюся матрицу, в которой элементы побочной диагонали расположены в порядке возрастаниия.
 

Примеры
Входные данные Выходные данные
1
5
12 4 8 13 13 
1 12 1 4 15 
2 3 5 2 3 
6 5 13 12 14 
14 9 15 4 12 
12 4 8 13 14 
1 12 1 13 15 
2 3 5 2 3 
6 5 13 12 14 
4 9 15 4 12
 

Напишите программу, которая переставляет элементы квадратной матрицы, расположенные на главной диагонали, в порядке возрастания. Остальные элементы матрицы должны остаться на своих местах.
 

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

В первой строке записано одно число N размер квадратной матрицы ( 1 <= N <= 100 ). В следующих N строках записаны строки матрицы, в каждой – по N натуральных чисел, разделённых пробелами. 
 

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

Программа должна вывести получившуюся матрицу, в которой элементы главной диагонали расположены в порядке возрастаниия.
 

Примеры
Входные данные Выходные данные
1
5
1 11 11 5 10 
2 9 2 10 2 
12 9 10 9 15 
6 15 14 1 11 
11 12 4 9 3 
1 11 11 5 10 
2 1 2 10 2 
12 9 3 9 15 
6 15 14 9 11 
11 12 4 9 10
 
Дан двумерный массив A размерностью NxM. Напишите программу, которая добавляет к элементам каждой строки такой новый элемент, чтобы сумма положительных элементов строки стала бы равна модулю суммы отрицательных элементов строки.

Входные данные
В первой строке входных данных записаны через один пробел два натуральных числа N и M ( 0 < N, M <= 25). Далее идут N строк по M положительных целых чисел в каждой - элементы матрицы A (каждый элемент матрицы не превышает 105).

Выходные данные
Выведите результирующий массив A размерностью Nx(M+1) на экран. Все элементы строки должны быть разделены одним пробелом.
 
 
Примеры
Входные данные Выходные данные
1 4 5
-10 2 10 -3 4
-5 3 6 -8 8
12 -10 3 -8 4
1 2 3 -1 -2
-10 2 10 -3 4 -3
-5 3 6 -8 8 -4
12 -10 3 -8 4 -1
1 2 3 -1 -2 -3
Дан двумерный массив A размерностью NxM. Напишите программу, которая определяет сумму всех элементов матрицы, а также какую долю в этой сумме составляет сумма элементов каждого столбца.

Входные данные
В первой строке входных данных записаны через один пробел два натуральных числа N и M ( 0 < N, M <= 25). Далее идут N строк по M положительных целых чисел в каждой - элементы матрицы A (каждый элемент матрицы не превышает 105).

Выходные данные
В первой строке выведите сумму всех элементов матрицы. 
Во второй строке выведите M чисел через пробел - долю, которую составляет сумма элементов каждого столбца в общей сумме. Долю выводить с округлением до ближайшего целого числа, не большего доли. Первое число в строке - доля в общей сумме элементов первого столбца, второе число - доля в сумме элементов второго столбца и т.д. (нумерация столбцов с 1).
 
 
Примеры
Входные данные Выходные данные
1 4 4
1 2 3 4 
4 3 2 1
2 1 4 3
3 4 1 2
40
25 25 25 25

Миша занимается параллельным программированием. Сегодня он пишет программу для исполнителя "Квадратик". Исполнитель "Квадратик" живет на клетчатом поле размера  N х M, размер одной клетки 1х1. Перемещаясь он закрашивает клетку, на которой побывал. Клетку, на которой он начал движение и на которой остановился он также закрашивает. 
Миша установил на поле K "Квадратиков". Каждый "Квадратик" будет двигаться в указанном Мишей направлении и останавливаться дойдя до конца поля. После окончании движения всех "Квадратиков", Миша хочет узнать сколько клеток поля получились закрашенными. Так как задача подсчета не относится к параллельному программированию, а размер поля может быть очень большим, Миша попросил вас написать программу для подсчета таких клеток.
 

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

Программа получает на вход несколько строк. Первая строка содержит целые числа M и N - размеры поля исполнителя "Квадратик" (1 <= M, N <= 106). Во второй строке записано число K - количество "Квадратиков" на поле (0 <= K <= 103). Далее идут K строк, каждая из которых описывает положение определенного "Квадратика" и направление, в котором он будет перемещаться. Формат каждой из таких строк: два целых числа, записанных через один пробел и один символ  {NESW} - начальные координаты и направление движения соответствующего "Квадратика". Символ отделен от чисел ровно одним пробелом. 
Символами обозначены следующие направления движения: N - вверх, S - вниз, W - влево, Е - вправо.


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

Выведите количество закрашенных клеток поля, после окончания движения всех "Квадратиков".


Пояснения
Поле исполнителя и расположение "Квадратиков" для первого примера, показаны на рисунке ниже. Стрелочкой обозначено направление движения соответствующего "Квадратика".

 
Примеры
Входные данные Выходные данные
1
8 5
4
4 4 S
6 2 W
6 3 N
6 4 S
13

Громила Ральф вот уже 30 лет живёт в игровом автомате, и вы его можете увидеть на экране того самого автомата. 
Сегодня Ральф гуляет по экрану, на котором отображается прямоугольное изображение, разбитое на N x N клеток. В каждой клетке находится тарелка с его любимыми блинчиками (на всех тарелках разное количество блинчиков). Ральф начинает перемещаться с левой нижней клетки прямоугольника. Съев все блинчики в текущей клетке, он перемещается на одну клетку вправо или на одну клетку вверх, всегда выбирая ту из клеток, где больше блинчиков в тарелке (за пределами прямоугольника тарелок с блинчиками нет). В конце концов Ральф приходит в правую верхнюю клетку. Вам же предстоит определить, сколко всего блинчиков съел Ральф пока путешествовал по экрану. Блинчики в начальной и конечной клетках Ральф тоже съел с большим удовольствием.


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

Программа получает на вход в первой строке целое число N – размер изображения (2 <= N <= 10). В следующих N строках задаются через пробел числа, обозначающие количество блинчиков на тарелках, начиная с верхнего ряда и заканчивая нижним. Все числа – различные, натуральные, не превосходящие 100.


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

Выведите одно число - количество блинчиков, которое съест Ральф, добравшись до правой верхней клетки.

 

Примеры
Входные данные Выходные данные
1
2
37 82
23 52
157
Алиса часто играет в шахматы. Причем так как она любит путешествовать по другим галактикам, она знает много разновидностей этой древней игры.  Иногда она просто решает головоломки, созданные на шахматной доске.  Шахматная доска Алисы может иметь самые разные размеры, не только 8×8.
Сейчас Алиса решает шахматную головоломку, суть которой заключается в следующем. На одно из полей доски размером m×n записывается некоторое положительное целое число и затем на него ставится ферзь. После этого ферзь делает k ходов. Ходит ферзь по стандартным шахматным правилам. Ферзь не может ходить на поля, на которых уже был. Также, перед там как выполнить ход, на выбранном поле пишется целое число, причем такое, что оно больше всех других чисел, уже записанных на доске.
Решение головоломки заключается в том, чтобы восстановить маршрут ферзя по числам, записанным на доске. Возможно записанные числа не дают решения. 
Для решения этой головоломки Алиса написала программу, которая может быстро ее решать при больших значениях mn и k
Напишите и вы такую программу. 

В стандартных шахматных правилах ферзь может переместиться на любое поле доски, находящееся на одной вертикали, горизонтали или диагонали с тем полем, на котором он находится.

Входные данные
В первой строке вводятся числа mn и k ( 1< = m, n <= 300, 0 <= k <  mn). Следующие m строк содержат по k целых чисел и описывают поля доски (пустому полю соответствует число 0, а полю, на котором записано число – это число). Все числа, записанные на доске, положительные, целые и не превышают 109.

Выходные данные
Если головоломка составлена с ошибкой и  записанные на ней числа не дают решения, то вывелите «Wrong Board».
В противном случае выведите m строк по n чисел – для каждого поля выведите номер хода, перед которым ферзь побывал на этом поле, а для последнего поля, на котором он оказался – число k + 1. Для полей, на которые ферзь не попадал, выведите число 0.
 
Примеры
Входные данные Выходные данные
1
4 4 7
10 20 0 100
30 0 0 40
0 0 0 0
45 42 0 70
1 2 0 8 
3 0 0 4 
0 0 0 0 
6 5 0 7 
2
2 4 4
10 20 30 40
0 50 0 0
Wrong Board
3
2 2 2
1 2
4 3
Wrong Board

Учащиеся театрального кружка школы любят посещать театр. В очередной раз они пошли в театр, в котором n рядов по m мест в каждом. Руководитель кружка пришла за билетами и хочет купить билеты всем учащимся в одном ряду на соседние места. 
По имеющейся информации о проданных билетах на спектакль определите, сможет ли руководитель купить билеты всем учащимся и себе в одном ряду. 
Информация о проданных билетах записана в двумерный массив (единицы означают, что на данное место билет продан, ноль - что место свободно). Руководителю кружка вместе с детьми необходимо k билетов.


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

В первой строке входных данных находятся числа nmk <= 100. В следующих n строках входных данных расположены по m чисел (0 и 1), разделенных пробелами.


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

Выведите YES или NO в зависимости от ответа на вопрос задачи.

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

Яркости пикселей рисунка закодированы числами от 0 до 255 в виде матрицы. Преобразовать рисунок в черно-белый по следующему алгоритму:

  1. вычислить среднюю яркость пикселей по всему рисунку
  2. все пиксели, яркость которых меньше средней, сделать черными (записать код 0), а остальные -– белыми (код 255)


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

В первой строке записаны через пробел размеры матрицы: количество строк N и количество столбцов M ( 1 <= N , M <= 100 ). В следующих N строках записаны строки матрицы, в каждой – по M натуральных чисел в диапазоне от 0 до 255, разделённых пробелами.
 

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

Программа должна вывести в первой строчке среднее значение яркости для заданного рисунка с точностью 4 знака в дробной части. В следующих N строчках выводится построенная матрица, соответствующая чёрно-белому изображению.

 
Примеры
Входные данные Выходные данные
1
4 4
12 14 67 45
32 87 45 63
69 45 14 11
40 12 35 15
37.8750
0 0 255 255
0 255 255 255
255 255 0 0
255 0 0 0

Напишите программу, которая переставляет строки матрицы так, чтобы значения в столбце K шли в порядке убывания. Строки, у которых значения в столбце K равны, должны быть выведены в том же порядке, в котором они стояли в исходной матрице.
 

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

В первой строке записаны через пробел размеры матрицы: количество строк N и количество столбцов M ( 1 <= N , M <= 100 ). В следующих N строках записаны строки матрицы, в каждой – по M натуральных чисел, разделённых пробелами. В последней строке вводится номер столбца K .
 

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

Программа должна вывести получившуюся матрицу, в которой строки переставлены так, чтобы значения в столбце K шли в порядке убывания.
 

Примеры
Входные данные Выходные данные
1
4 5
21 22 23 24 25
26 12 18 29 33
11 37 31 14 39
16 17 18 5 20
1
26 12 18 29 33 
21 22 23 24 25 
16 17 18 5 20 
11 37 31 14 39 

Седловая точка – это элемент матрицы, который одновременно является наибольшим в своем столбце и наименьшим в своей строке. Напишите программу, которая находит индексы всех седловых точек матрицы. Нумерация строк и столбцов матрицы начинается с единицы.

 

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

В первой строке записаны через пробел размеры прямоугольной матрицы N и N (количество строк и количество столбцов, 1  <= N, M <=  100). В следующих N строках записаны строки матрицы, в каждой – по M натуральных чисел, разделённых пробелами.
 

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

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

 
Примеры
Входные данные Выходные данные
1
4 5
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
9 17 18 19 20
3 1

Шахматный конь, расположенный в центре доски держит под ударом 8 полей. В углу только лишь 2 поля.
Вам задано расположение коня на шахматной доске. Выведите на экран шахматную доску, с расположенным на ней конем, а также отметьте все поля, которые конь держит под ударом. Поле, где расположен конь, отметьте английской буквой «K». Поля, которые он держит под ударом, отметьте символами «*». Остальные клетки заполните точками.


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

Программа получает на вход два числа - координаты коня на шахматной доске (доска размером 8х8). Координаты вводятся на одной строке через пробел. Первое число обозначает номер строки, а второе — номер столбца. Все числа принимают значения от 1 до 8.


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

Выведите на экран изображение доски так, как это показано в примере. Обратите внимание, что символы в одной строке разделены пробелом.

 
Примеры
Входные данные Выходные данные
1
4 5
. . . . . . . . 
. . . * . * . . 
. . * . . . * . 
. . . . K . . . 
. . * . . . * . 
. . . * . * . . 
. . . . . . . . 
. . . . . . . . 

Создайте двумерный массив размером n×m и заполните его натуральными числами от 1 до nxm по вертикали (см. пример).


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

Даны два натуральных числа: n и m, не превышающие 1010.


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

Выведите заполненный двумерный массив

 

Примеры
Входные данные Выходные данные
1
3 4
1 4 7 10 
2 5 8 11 
3 6 9 12 
Дано натуральное число n. Создайте массив A[2*n+1][2*n+1] и заполните его по спирали, начиная с числа 0 в центральной клетке A[n+1][n+1]. Спираль выходит вверх, далее закручивается против часовой стрелки.

Формат входных данных
Программа получает на вход число  n.

Формат выходных данных
Программа должна вывести полученный массив. Каждый элемент массива необходимо записывать в трех знакоместах.
 
Примеры
Входные данные Выходные данные
1 2
 12 11 10  9 24
 13  2  1  8 23
 14  3  0  7 22
 15  4  5  6 21
 16 17 18 19 20
На третью планету от Солнца отправили n космических кораблей для сбора различных объектов для изучения. На каждом корабле было размещено по m контейнеров различного объема. После изучения планеты, отобрано n·m экземпляров. Командный состав решил взять несколько экземпляров самого большого объема. Необходимо определить какой объем должен иметь самый большой экземпляр, чтобы его можно было вывезти с планеты, а также количество кораблей и их номера, на которые можно поместить самые большие экземпляры. Все корабли пронумерованы, начиная с нуля.

Входные данные
Первая строка содержит два целых числа n и m: n - количество кораблей, отправленных на третью планету (1 <= n <= 100), m - количество контейнеров на каждом корабле. В следующих n строках содержат по m чисел, каждое из которых показывает объем контейнера (1 <= m <= 100, каждое число - неотрицательное не более 100). 

Выходные данные
Выведите в первой строке - количество космических кораблей, которыми можно привезти самый большой экземпляр, через пробел максимальный объем, который можно вывезти с планеты. На следующей строке выведите через пробел номера кораблей (нумеруются с нуля), на которые можно загрузить самый большой экземпляр.
 
Примеры
Входные данные Выходные данные
1
3 3
1 2 3
3 5 4
5 2 2
2 5
1 2
Робот перемещается по клетчатой плоскости и рисует спираль. Исходно он находится в клетке (0, 0) и направлен в сторону увеличения первой координаты.
Далее он действует по следующему алгоритму: совершает d перемещений вперед, затем поворачивает налево и снова делает d перемещений вперед. После этого он поворачивает налево и умножает значение d на k. Затем робот повторяет описанный процесс. Робот останавливается, сделав суммарно ровно n перемещений.
Требуется вывести картинку, на которой отмечены клетки, на которых побывал робот.

Входные данные
На вход подаются целые числа n, d и k (1 ≤ n ≤ 1000, 1 ≤ d ≤ 100, 2 ≤ k ≤ 5).

Выходные данные
Пусть минимальный прямоугольник из клеток, содержащий все посещенные роботом клетки, имеет высоту h и ширину w. На первой строке выведите числа h и w, разделенные пробелом. Следующие h строк должны содержать по w символов, выведите «*» для клетки, посещенной роботом и «.» для не посещенной.
Примеры
Входные данные Выходные данные
1 13 2 2
5 5
*****
*...*
*.***
*....
**...
Даны два числа n и m. Создайте двумерный массив размерностью nхm и заполните его по следующему правилу:
- числа, стоящие в строке 0 или в столбце 0 равны 1 (A[0][j]=1, A[i][0]=1);
- значения остальных элементов массива должны быть равны сумме элементов, стоящих на один слобец левее и на одну строку выше от этого элемента. 

Входные данные
Программа получает на вход два числа n и m.

Выходные данные
Выведите на экран получившийся массив.
 
Примеры
Входные данные Выходные данные
1
3 3
1 1 1
1 2 3
1 3 6
Даны два числа n и m. Создайте двумерный массив A[n][m], заполните его таблицей умножения A[i][j]=i*j и выведите на экран. При этом нельзя использовать вложенные циклы, все заполнение массива должно производиться одним циклом.
Входные данные
Программа получает на вход два числа n и m – количество строк и столбцов, соответственно.

Выходные данные
Программа должна вывести  полученный массив. Числа разделяйте одним пробелом.
 
Примеры
Входные данные Выходные данные
1 3 3 0   0   0
0   1   2
0   2   4
В метании молота состязается n спортcменов. Каждый из них сделал m бросков. Победитель определяется по лучшему результату. Определите количество участников состязаний, которые разделили первое место, то есть определите количество строк в массиве, которые содержат значение, равное наибольшему.

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

Выходные данные
Программа должна вывести  одно число - количество победителей соревнования.

 Примеры
Входные данные Выходные данные
1 3 3
3 1 2
1 3 4
3 3 3
1
Поделиться
Класснуть