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

Trò chơi 3

Đề bài

Mô tả

Cho một bảng vuông kích thước N×N, N là số lẻ. Các hàng của bảng được đánh số từ 1 tới N, từ trên xuống dưới; các cột của bảng được đánh số từ 1 tới N, từ trái sang phải. Ban đầu, các số từ 1 đến N2 được ghi vào bảng này lần lượt từ trái sang phải, từ trên xuống dưới. Khi N=5 thì bảng vuông sẽ có dạng như sau:

1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
16 17 18 19 20
21 22 23 24 25

Luật chơi:Q lượt chơi, mỗi lượt chơi quản trò sẽ cấp cho người chơi thông tin là ba số nguyên P,X,Y (1PN2; 1X,YN). Người chơi cần đưa số nguyên P đến vị trí hàng X cột Y với số lần dịch bảng nhỏ nhất bằng cách sau:

  • Dịch các số trên hàng chứa số P sang phải hoặc sang trái một ô theo vòng tròn cho đến khi số P nằm trên cột Y;
  • Dịch các số trên cột Y lên trên hoặc xuống dưới một ô theo vòng tròn cho đến khi số P nằm trên hàng X;

Mỗi thao tác dịch hàng hoặc cột như trên được tính là một lần dịch bảng. Bảng đầu tiên của lượt chơi sau chính là bảng kết thúc của lượt chơi trước.

Cho thông tin của Q lượt chơi. Hãy lập trình đưa ra số lần dịch bảng nhỏ nhất tìm được tương ứng với mỗi lượt.

Dữ liệu vào

  • Dòng đầu tiên chứa hai số nguyên dương N,Q (1N<30000; 1Q2000);
  • Q dòng sau, mỗi dòng chứa ba số nguyên dương P,X,Y (1PN2; 1X,YN) mô tả thông tin của một lượt chơi.

Dữ liệu ra

Gồm Q dòng, dòng thứ i tương ứng là số lần dịch bảng nhỏ nhất tìm được trong lượt chơi thứ i.

Ràng buộc

  • 1N<30000, N là số lẻ
  • 1Q2000
  • 1PN2; 1X,YN
  • 40% số test: N<100; Q100
  • 40% số test: N<1500; Q1500
  • 20% số test: không có ràng buộc gì thêm.

Ví dụ

Input Output Giải thích
5 3
17 2 5
5 4 2
18 1 1
4
2
4
Lượt chơi đầu tiên: dịch số 17 đến hàng 2 cột 5 cần 4 lần dịch. Lượt chơi thứ hai: cần 2 lần dịch bảng. Lượt chơi thứ ba: cần 4 lần dịch bảng.

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.46 awk 1.3.4 gcc 16.1.0 csc 6.12.0.200 g++ 16.1.0 g++-themis 16.1.0 g++17 16.1.0 g++20 16.1.0 g++23 16.1.0 clang++ 22.1.6 dmd 2.112.0 dart 3.12.1 gforth 0.7.3 gfortran 12.2.0 go 1.26.3 groovyc 5.0.6 javac 25.0.3 node 26.2.0 kotlinc 2.3.21 sbcl 2.2.9 lua 5.4.8 nim 2.2.10 fpc 3.2.2 fpc-themis 3.2.2 perl 5.36.0 php 8.5.6 pike 8.0 pypy3 7.3.23 python3 3.14.5 racket 8.7 ruby 4.0.5 rustc 1.96.0 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 tclsh 8.6 bun 1.3.14 deno 2.8.1 v 0.5.1 zig 0.16.0