Lật bảng vuông
Submit solution
Points:
1.5 (partial)
Time limit:
1.0s
Memory limit:
67M
Author:
Problem type
Allowed languages
Ada, Assembly, Awk, C, C++, C11, CLANG, CLANGX, Classical, COBOL, Coffee, CSC, D lang, DART, F95, FORTH, Fortrn, GAS32, GO, Haskell, Itercal, Java, kotlin, LEAN, LISP, LUA, MONOVB, Nasm, OCAML, Pascal, Perl, php, PIKE, prolog, Pypy, Python, Ruby 2, RUST, Scala, SCM, SED, SWIFT, TCL, TUR, V8JS, VB, ZIG
Cho một bảng vuông cỡ \(n\)x\(n\). Mỗi ô trong bảng vuông được được điền các số lần lượt từ \(1\) tới \(n^2\) từ trái sang phải, trên xuống dưới.
Sau khi lật bảng vuông theo đường chéo chính (đường chéo góc trên trái - góc dưới phải), bạn hãy xác định xem vị trí ô ghi số \(p\) sau phép lật ghi số mấy.
Đầu vào
Dòng đầu tiên chứa hai số tự nhiên \(n\) và \(q\) \((1 \le n \le 10^9, 1 \le q \le 10^6)\)- cỡ của bảng vuông và số truy vấn.
Dòng tiếp theo chứa \(q\) số tự nhiên trong khoảng \([1, n^2]\) - các số \(p\).
Đầu ra
Một dòng duy nhất chứa \(q\) số tự nhiên, số thứ \(i\) là kết quả của truy vấn thứ \(i\).
Subtask
\(30\%\) số test có \(n, q \le 100\).
Ví dụ
Đầu vào:
3 3
3 5 6
Đầu ra:
7 5 8
Giải thích:
1 2 3 1 4 7
4 5 6 --> 2 5 8
7 8 9 3 6 9
- Trong truy vấn đầu tiên, vị trí ô ghi số \(7\) sau phép lật ghi số \(3\).
- Trong truy vấn thứ hai, vị trí ô ghi số \(5\) sau phép lật ghi số \(5\).
- Trong truy vấn thứ ba, vị trí ô ghi số \(6\) sau phép lật ghi số \(8\).
Comments
Tính chất đối xứng + qui đổi thành mảng 1 chiều
.
a[i][j]=i.n+j+1 -> mảng 1 chiều có dộ dài n.n với vị trí a[i.n+j+1]=i.n+j+1
Em bị lỗi MLE a ạ .
E khai báo mảng kích thước quá lớn nên bị lỗi MLE (memory limit exceeeded) với RTE (Runtime Error).
a[i][j]=i.n+j+1 -> a[j][i]=j*n+i+1 (tính đối xứng )