[Buổi 12][Củng cố ma trận][WS] Bài 1: Matrix Analyzer 1.0


LÀM BÀI

Points: 100
Time limit: 2.0s
Memory limit: 256M

Author:
Problem types
Allowed languages
C++

Matrix Analyzer 1.0

Bối cảnh

Đây là sản phẩm tổng hợp của Module 03: một công cụ phân tích và biến đổi ma trận.

Chương trình đọc ma trận, thực hiện một phép hoán đổi theo lệnh, sau đó tạo báo cáo từ trạng thái ma trận mới.

Yêu cầu

  1. Đọc rows, cols và ma trận.
  2. Đọc type x y: nếu type=1 thì đổi hàng x,y; nếu type=2 thì đổi cột x,y; type=0 thì không đổi.
  3. Sau biến đổi, in tổng toàn ma trận.
  4. In tổng biên.
  5. In hàng có tổng lớn nhất: BEST_ROW index sum.
  6. Nếu ma trận vuông, in SYMMETRIC YES/NODIAGONAL_UNION sum; nếu không vuông, in SYMMETRIC N/ADIAGONAL_UNION N/A.
  7. In ma trận cuối cùng.

Yêu cầu tổ chức code

Không dùng vector/STL. Mọi phép biến đổi thao tác trên mảng 2 chiều tĩnh.

Online Judge chủ yếu chấm output. Yêu cầu tổ chức code giúp bảo đảm học viên luyện đúng kỹ năng của buổi học.

Input

Dòng 1: rows cols; ma trận; dòng cuối type x y (với type=0, x y có thể là 0 0).

Output

Nhiều dòng theo định dạng yêu cầu.

Ràng buộc

1 ≤ rows,cols ≤ 50; index swap hợp lệ.

Ví dụ 1

Input

2 2
1 2
2 1
0 0 0

Output

SUM 6
BORDER 6
BEST_ROW 0 3
SYMMETRIC YES
DIAGONAL_UNION 6
MATRIX
1 2
2 1

Giải thích

Không swap. Ma trận đối xứng. Tổng=6, biên=6, hai hàng đều tổng 3 nên chọn hàng 0. Hợp hai chéo của 2×2 gồm cả 4 ô nên bằng 6.

Ví dụ 2

Input

2 3
1 2 3
4 5 6
1 0 1

Output

SUM 21
BORDER 21
BEST_ROW 0 15
SYMMETRIC N/A
DIAGONAL_UNION N/A
MATRIX
4 5 6
1 2 3

Giải thích

Swap hàng 0 và 1 làm ma trận thành 4 5 6 / 1 2 3. Tổng không đổi 21. Vì ma trận chữ nhật nên symmetry/diagonal union là N/A.

Thông tin học tập

  • Module: M03
  • Buổi: B12
  • Loại bài: WORKSHOP
  • Độ khó: Medium
  • Concepts: 2D static arrays, border sum, row analysis, row/column swap, symmetry, diagonal union
  • Giới hạn kiến thức: B01-B12
  • Time limit: 2 second(s)
  • Memory limit: 256 MB
  • Point: 100

Comments

There are no comments at the moment.

Zalo