SỐ CHẴN LẺ GẦN NHẤT

Cho số nguyên dương ~ n ~ và dãy số nguyên ~ a_1, a_2, …., a_n ~. Ở mỗi bước di chuyển, bạn có thể nhảy từ vị trị ~ i ~ đến vị trí ~ i-a_i ~ nếu ~ i-a_i ≥ 1 ~ hoặc vị trí ~ i+a_i ~ nếu ~ i+a_i ≤ n ~.

Yêu cầu: với mỗi vị trí ~ i ~ ~ (i = 1…n ) ~ trong dãy số hãy cho biết cần ít nhất bao nhiêu bước để di chuyển từ vị trí ~ i ~ đến vị trí ~ j ~ sao cho hai số ~ a_i ~ và ~ a_j ~ chẵn lẽ đối lập nhau (nghĩa là nếu ~ a_i ~ chẵn thì ~ a_j ~ lẻ và ngược lại)

Dữ liệu vào

  • Dòng đầu tiên ghi số nguyên dương ~ n ~ ~ 1 ≤ n ≤ 10^5 ~;
  • Dòng tiếp theo ghi lần lượt ~ n ~ số nguyên là ~ a_1, a_2, …, a_n ~ ~ 1 ≤ a_i ≤ n ~

Kết quả

In ~ n ~ số nguyên ~ d_1, d_2, …, d_n ~ trong đó ~ d_i ~ là số bước ít nhất để di chuyển từ vị trí thứ ~ i ~ theo yêu cầu bài toán. Nếu tại vị trí thứ ~ i ~ không có cách di chuyển thì ~ d_i = -1 ~.

Ví dụ:

Input 1

6
1 4 3 1 4 2 

Output 1

1 2 1 1 1 1 

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

hpcode.edu.vn
Code tích cực
Trong 24h
  1. nguyenvuquang (12/18)
  2. huy_notcoding (9/14)
  3. ilpnvm (9/18)
Trong 7 ngày
  1. ducchinh (169/223)
  2. hienpham (163/213)
  3. bichngoc (150/213)
Trong 30 ngày
  1. ducchinh (169/223)
  2. hienpham (163/213)
  3. tgtam2022 (150/369)
Thống kê
AC/Sub: 97887/180710
Pascal: 17121
C++: 130348
Python: 33199
Lượt xem/tải tests: 37713

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