Biến đổi hoán vị

Xem dạng PDF

Gửi bài giải


Điểm: 0,81 (OI)
Giới hạn thời gian: 0.38s
Giới hạn bộ nhớ: 256M
Input: stdin
Output: stdout

Nguồn bài:
Russian Code Cup 2012
Dạng bài
Ngôn ngữ cho phép
C, C++, Go, Java, Kotlin, Pascal, PyPy, Python, Rust, Scratch

Cho ~1~ dãy số có ~N~ phần tử. Có ~2~ thao tác được phép sử dụng để biến đổi dãy số:

  1. Đổi chỗ ~2~ phần tử đầu tiên của dãy
  2. Cho ~1~ hoán vị ~P~, di chuyển phần tử thứ nhất đến vị trí ~P[1]~, phần tử thứ ~2~ đến vị trí ~P[2]~, ...

Các thao tác được phép thực hiện với số lần không hạn chế và theo bất kì thứ tự nào.

Cho ~M~ truy vấn "u v", bạn cần trả lời xem có thể có thể biến đổi hoán vị ban đầu sao cho phần tử thứ ~u~ có thể di chuyển đến vị tri ~v~ hay không?

Input

  • Dòng ~1~: ~2~ số ~N~ và ~M~ ~(0 < N~, ~M \le 10^{5})~
  • Dòng ~2~: hoán vị ~P~ ~(1~ hoán vị của {1, ~2~, ..., N})
  • Dòng ~3~ ...~M + 2~: mỗi dòng chứa ~2~ số nguyên ~u~ và ~v~ ~(0 < u~, ~v \le N)~

Output

  • Với mỗi truy vấn, đưa ra "Yes" hoặc "No" tương ứng

Sample Input

4 2
1 4 3 2
4 1
3 4

Sample Output

Yes
No

Đang tải...