[DHBB25 - DX30 - 11] Bài 1: Trò chơi

Xem dạng PDF

Gửi bài giải

Điểm: 20,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 1G
Input: stdin
Output: stdout

Dạng bài
Ngôn ngữ cho phép
C, C++, Java, Output Only, Pascal, PyPy, Python, Scratch, TEXT

Trong trường hợp đề bài hiển thị không chính xác, bạn có thể tải đề bài tại đây: Đề bài

An mới tạo ra trò chơi trên điện thoại gồm nhiều mức độ. Trong mỗi mức, người chơi được cho hai dãy số nguyên A và B có cùng ~N~ số. Mục tiêu của người chơi là vượt qua mỗi mức bằng cách biến đổi dãy A thành dãy B.

Có hai thao tác trong trò chơi mà người chơi cần thực hiện trên dãy A:

  • Di chuyển sang phải: chọn một đoạn ~[l, r]~ và đặt ~A_i = A_{i+1}~ với mọi ~l \le i \le r~.
  • Di chuyển sang trái: chọn một đoạn ~[l, r]~ và đặt ~A_i = A_{i-1}~ với mọi ~l \le i \le r~.

Ví dụ: Ban đầu, dãy ~A = [0, 1, 2, 3, 4, 5]~, nếu di chuyển sang phải trên đoạn ~[2, 4]~, ta thu được dãy ~[0, 1, 2, 2, 2, 5]~. Nếu di chuyển sang trái trên đoạn ~[3, 5]~, ta thu được dãy ~[0, 1, 2, 5, 5, 5]~. Chú ý dãy A có chỉ số bắt đầu từ vị trí 0.

Không may, trò chơi bị lỗi và có một số mức người chơi không thể vượt qua được.

Yêu cầu: Bạn hãy viết chương trình cho biết có thể biến đổi dãy A thành dãy B bằng hai thao tác trên hay không?

Input

  • Dòng 1 chứa số nguyên dương ~N~ (~1 \le N \le 300000~)
  • Dòng 2 chứa ~N~ số nguyên dương dãy ~A~, các số có giá trị không quá ~300000~.
  • Dòng 3 chứa ~N~ số nguyên dương dãy ~B~, các số có giá trị không quá ~300000~.

Output

  • Dòng 1 đưa ra từ ~YES~ nếu có thể biến dãy A thành dãy B. Ngược lại đưa ra từ ~NO~.
  • Nếu dòng thứ nhất đưa ra từ ~YES~, dòng thứ 2 chứa số nguyên dương ~K~ (~K \le N~) là số lần biến đổi.
  • Mỗi dòng trong ~K~ dòng sau chứa ba giá trị: ~D_j, l_j~ và ~r_j~. Giá trị ~D_j~ là ~R~ hoặc ~L~ chỉ ra rằng thao tác thứ ~j~ là di chuyển sang phải hoặc sang trái tương ứng. Giá trị ~l_j~ và ~r_j~ là đoạn cần di chuyển (~0 \le l_j \le r_j < N~).

Bình luận

Hãy đọc nội quy trước khi bình luận.


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