trang chủ / đề bài / textedit

Trình soạn thảo

Đề bài

Mô tả

Một trình soạn thảo văn bản đang mở một tệp gồm n dòng, dòng thứ i chứa ai ký tự (kể cả dấu cách). Nếu một dòng có k ký tự thì trên dòng đó con trỏ có thể đứng ở k+1 vị trí: trước một ký tự bất kỳ, hoặc sau toàn bộ ký tự (cuối dòng). Vị trí con trỏ được mô tả bằng cặp số (r,c) với r là chỉ số dòng và c là chỉ số vị trí trên dòng đó, đánh số từ 1.

Con trỏ chỉ được di chuyển bằng bốn phím Lên, Xuống, Trái, Phải. Giả sử trước khi bấm phím con trỏ đang ở (r,c):

  • Lên: nếu r=1 thì con trỏ đứng yên. Ngược lại con trỏ chuyển sang dòng r−1 và giữ nguyên chỉ số c; nếu dòng r−1 quá ngắn để chứa vị trí c thì con trỏ nhảy về vị trí cuối cùng của dòng r−1.
  • Xuống: tương tự với dòng r+1; nếu r=n thì con trỏ đứng yên.
  • Trái: nếu c>1 thì con trỏ về vị trí c−1, ngược lại con trỏ đứng yên.
  • Phải: nếu c<ar+1 thì con trỏ sang vị trí c+1, ngược lại con trỏ đứng yên.

Hãy tìm số lần bấm phím ít nhất để đưa con trỏ từ vị trí (r1,c1) đến vị trí (r2,c2).

Dữ liệu vào

  • Dòng đầu chứa số nguyên n là số dòng của tệp.
  • Dòng thứ hai chứa n số nguyên a1,a2,…,an.
  • Dòng thứ ba chứa bốn số nguyên r1,c1,r2,c2.

Dữ liệu ra

Một số nguyên duy nhất là số lần bấm phím ít nhất.

Ràng buộc

  • 1≤n≤100
  • 0≤ai≤105
  • 1≤r1,r2≤n
  • 1≤c1≤ar1+1, 1≤c2≤ar2+1

Ví dụ

Input Output Giải thích
3
10 1 10
1 10 1 1
3 Con trỏ đứng ở (1,10) và cần về (1,1) trên cùng dòng đó. Bấm Trái 9 lần thì tốn 9 lượt, nhưng dòng 2 chỉ có 2 vị trí: bấm Xuống đưa con trỏ về (2,2), bấm Lên quay lại (1,2), rồi bấm Trái một lần.
4
2 1 6 4
3 4 4 2
3 Từ (3,4) bấm Trái về (3,3), bấm Xuống về (4,3) vì dòng 4 có 5 vị trí nên chỉ số giữ nguyên, rồi bấm Trái về (4,2).
4
10 5 6 4
1 11 4 2
6 Bấm Xuống ba lần: (1,11)→(2,6)→(3,6)→(4,5), sau đó bấm Trái ba lần để về (4,2).

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.402 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.6 gforth 0.7.3 gfortran 15.3.0 go 1.27.3 groovyc 5.1.3 javac 26.0.2.1 node 26.12.1 julia 1.13.2 kotlinc 2.4.21 lean 4.35.0 sbcl 2.2.9 lua 5.5.1 nim 2.2.12 fpc 3.2.2 fpc-themis 3.2.2 perl 5.42.3 php 8.5.12 pike 8.0 swipl 9.0.4 pypy3 7.3.23 python3 3.15.1 racket 8.7 ruby 4.0.8 rustc 1.99.1 csc 5.3.0 ctoj-scratch 0.0.1 sed 4.9 swiftc 6.4.1 tclsh 8.6 bun 1.4.4 deno 2.9.8 v 0.5.2 zig 0.17.0