SẮP XẾP

Cho hai dãy số A, B mỗi dãy có \(n\) phần tử: \(A = \lbrack a_{1},a_{2},\ldots,\ a_{n}\rbrack\), và \(B = {\lbrack b}_{1},b_{2},\ldots,\ b_{n}\rbrack\). Thao tác duy nhất bạn có thể thực hiện trong bài toán này là chọn một dãy con liên tiếp của dãy \(A\) và sắp xếp dãy con đó theo thứ tự tăng dần.

Ví dụ, nếu \(A = \lbrack 8,\ 3,\ 6,\ 4,\ 3,\ 7\rbrack\), khi bạn chọn \(A\lbrack 2..5\rbrack\) (dãy con liên tiếp của dãy \(A\) từ vị trí 2 đến vị trí 5), dãy số sau khi thực hiện thao tác là \(A = \lbrack 8,\ 3,\ 3,\ 4,\ 6,\ 7\rbrack\).

Yêu cầu: Hãy cho biết sau khi thực hiện một hoặc một số thao tác này trên dãy \(A\), bạn có được dãy \(B\) hay không?

Dữ liệu vào:

  • Dòng đầu tiên chứa một số nguyên dương \(T\ (1 \leq T \leq 10)\) là số lượng các cặp dãy số \(A,\ B\ \)cần kiểm tra.

  • Mỗi 3 dòng tiếp theo trong T bộ 3 dòng:

    • Dòng thứ nhất chứa \(n\) \((1 \leq \ n \leq 10^{5})\).

    • Dòng thứ hai chứa \(a_{1},\ a_{2},\ldots,\ a_{n}\) (\(1 \leq a_{i} \leq n)\).

    • Dòng thứ ba chứa \(b_{1},b_{2},\ldots,b_{n}\) (\(1 \leq b_{i} \leq n)\).

  • Tổng của n số trên cùng một hàng không vượt quá \(3 \times 10^{5}\).

Kết quả:

Dòng thứ \(t\), hãy in ra “YES” nếu có thể biến đổi dãy A thứ \(t\) ta được dãy B thứ \(t\), và in “NO” nếu ngược lại.

Ví dụ:

Input Output
3
7
1 7 1 4 4 5 6
1 1 4 4 5 7 6
3
1 2 3
3 2 1
5
1 1 3 3 5
1 1 3 3 5
YES
NO
YES

Ràng buộc:

+ Có 20% số điểm ứng với 20% số test có \(n\ \) ≤ 50.

+ Có 30% số điểm ứng với 30% số test có \(50 < \ n\) ≤ 1000.

+ 50% số điểm không có thêm ràng buộc gì.

Bạn cần đăng nhập để nộp bài

hpcode.edu.vn
Code tích cực
Trong 24h
  1. sythai (5/8)
  2. npk1605 (5/10)
  3. trungnam (4/4)
Trong 7 ngày
  1. nguyenanhvu (40/64)
  2. khieuquan (35/59)
  3. ngokhang (27/55)
Trong 30 ngày
  1. quechi (85/105)
  2. dangphong3108 (79/125)
  3. kiennhientv (79/179)
Thống kê
AC/Sub: 97887/180710
Pascal: 17121
C++: 130348
Python: 33199
Lượt xem/tải tests: 38905

Lưu Hải Phong - 2020
[email protected]