trang chủ / bài tập / belowdiag

Dưới đường chéo chính

Đề bài

Mô tả

Cho một ma trận vuông gồm n dòng và n cột. Các dòng được đánh số từ 1 đến n từ trên xuống dưới, các cột được đánh số từ 1 đến n từ trái sang phải.

Đúng n1 ô của ma trận chứa số 1, tất cả các ô còn lại chứa số 0. Bạn được phép thực hiện hai loại thao tác:

  1. Đổi chỗ dòng i và dòng j của ma trận;
  2. Đổi chỗ cột i và cột j của ma trận.

Ô nằm ở giao của dòng i và cột j được gọi là nằm dưới đường chéo chính nếu i>j.

Hãy đưa ma trận về dạng mà mọi số 1 đều nằm dưới đường chéo chính, bằng cách sử dụng các thao tác trên.

Bạn không cần cực tiểu hoá số thao tác, nhưng số thao tác không được vượt quá 105. Trong mọi thao tác, hai chỉ số ij phải khác nhau. Nếu có nhiều đáp án, in ra đáp án bất kỳ.

Dữ liệu vào

  • Dòng đầu tiên chứa số nguyên n, kích thước của ma trận.
  • n1 dòng tiếp theo, mỗi dòng chứa hai số nguyên xkyk, mô tả một ô chứa số 1 nằm ở dòng xk và cột yk.

Dữ liệu đảm bảo tất cả các vị trí đã cho là đôi một khác nhau.

Dữ liệu ra

  • Dòng đầu tiên in ra số nguyên không âm m, số thao tác cần thực hiện.
  • m dòng tiếp theo, mỗi dòng in ra ba số nguyên t, i, j: t=1 nếu đổi chỗ hai dòng, t=2 nếu đổi chỗ hai cột, còn ij là chỉ số của hai dòng (hoặc hai cột) được đổi chỗ.

Ràng buộc

  • 2n1000
  • 1xk,ykn
  • 0m105
  • 1t2, 1i,jn, ij

Ví dụ

Input Output Giải thích
3
3 1
1 3
3
2 2 3
2 1 2
1 1 2
Sau khi đổi chỗ cột 2 với cột 3, hai số 1 nằm ở (3,1)(1,2). Đổi chỗ cột 1 với cột 2 đưa chúng về (3,2)(1,1). Cuối cùng đổi chỗ dòng 1 với dòng 2 cho kết quả (3,2)(2,1), cả hai đều thoả i>j.
2
1 2
2
2 1 2
1 1 2
Số 1 ban đầu ở (1,2). Đổi chỗ hai cột đưa nó về (1,1), đổi chỗ hai dòng đưa nó về (2,1). Đáp án khác cũng được chấp nhận nếu hợp lệ.
3
2 1
3 2
0 Cả hai số 1 đã nằm dưới đường chéo chính, không cần thao tác nào.

Bình luận

Không có bình luận tại thời điểm này.

gnatmake 12.2.0 a68g 3.1.2 nasm 2.16.1 as_x64 2.47 awk 1.3.4 gcc 16.2.0 dotnet 10.0.400 g++ 16.2.0 g++-themis 16.2.0 g++17 16.2.0 g++20 16.2.0 g++23 16.2.0 clang++ 22.1.8 dmd 2.113.0 dart 3.13.2 gforth 0.7.3 gfortran 12.2.0 go 1.27.0 groovyc 5.1.1 javac 25.0.4 node 26.8.1 julia 1.12.7 kotlinc 2.4.10 lean 4.33.1 sbcl 2.2.9 lua 5.4.9 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.10 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.14.7 racket 8.7 ruby 4.0.6 rustc 1.98.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.3.3 tclsh 8.6 bun 1.4.0 deno 2.9.6 v 0.5.2 zig 0.16.0