TRUY VẤN HOÁN VỊ

(squeperm.*)

Cho dãy A gồm n phần tử a1, a2, ..., an là một hoán vị của tập số nguyên dương {1, 2, ..., n}.

Dãy B được tạo như sau: bi có giá trị là vị trí của phần tử trong dãy A nhỏ hơn ai và có vị trí gần i nhất. Nếu có 2 giá trị cùng nhỏ hơn ai và khoảng cách của chúng tới i là bằng nhau thì chọn vị trí của giá trị lớn hơn trong 2 giá trị đó (với i = 1, 2, …, n).

Sau khi có dãy B thì dãy A được biến đổi như sau: mỗi giây, với mỗi i từ 1 tới n, ta thay ai bằng abi . Nếu vị trí i không tồn tại giá trị bi thì ai = 0 (với i = 1, 2, …, n; giá trị của dãy B là không thay đổi qua các giây)

Ví dụ: A = [4,2,3,7,8,6,5,1], ta sẽ có B = [2,8,2,3,4,7,8,0] (0 nghĩa là không tồn tại giá trị).

Như vậy lúc đầu: A = [4,2,3,7,8,6,5,1]

  • Sau giây thứ 1: A = [2,1,2,3,7,5,1,0]

  • Sau giây thứ 2: A = [1,0,1,2,3,1,0,0]

  • Sau giây thứ 3: A = [0,0,0,1,2,0,0,0]

  • Sau giây thứ 4: A = [0,0,0,0,1,0,0,0]

  • Sau giây thứ 5: A = [0,0,0,0,0,0,0,0]

Yêu cầu: Cho q truy vấn, mỗi truy vấn cho hai số nguyên dương xy. Câu trả lời cho một truy vấn là sau ít nhất bao nhiêu giây thì ax = y ? Nếu không bao giờ ax = y thì câu trả lời là -1. Vì số lượng truy vấn là rất lớn nên chỉ cần tính tổng kết quả (câu trả lời) của tất các cả truy vấn (cho biết kết quả này không vượt quá 1018).

Dữ liệu vào:

  • Dòng thứ nhất chứa hai số nguyên dương nq (n, q ≤ 106);

  • Dòng thứ hai chứa n số nguyên dương a1, a2, ..., an (ain với i = 1, 2, …, n);

(Chú ý: giá trị các phần tử của dãy A là hoán vị của tập số nguyên dương {1, 2, ..., n}).

  • Trong q dòng tiếp theo, dòng thứ i chứa hai số nguyên dương xiyi mô tả truy vấn thứ i (xi, yin với i = 1, 2, …, q)

Kết quả: Ghi một số nguyên duy nhất là tổng kết quả (câu trả lời) của tất cả các truy vấn.

Ví dụ:

Input Output
8 7
4 2 3 7 8 6 5 1
8 1
4 3
1 1
5 2
5 1
6 2
8 5
8

Giải thích: câu trả lời của các truy vấn lần lượt là: 1,2,3,4,-1,-1.

  • Tổng của các số trên là: 1 +2 +3 +4 +(-1) +(-1) = 8.

Subtask:

  • Subtask 1: 25% số test có n, q ≤ 1000;

  • Subtask 2: 25% số test có n ≤ 1000;

  • Subtask 3: 25% số test có n, q ≤ 105;

  • Subtask 4: 25% số test không có ràng buộc gì thêm.

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

hpcode.edu.vn
Code tích cực
Trong 24h
  1. npk1605 (5/10)
  2. tuythoi213 (4/6)
  3. bao_khanh (2/3)
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]