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},\ldots.,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} \geq 1\) hoặc vị trí \(i + a_{i}\) nếu \(i + a_{i} \leq n\).

Yêu cầu: với mỗi vị trí \(i\ (i = 1\ldots 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}\)\(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\);

+ Dòng tiếp theo ghi lần lượt \(n\) số nguyên là \(a_{1},a_{2},\ldots,a_{n}\)

Giới hạn:

+ \(1 \leq n \leq 10^{5}\)

+ \(1 \leq a_{i} \leq n\)

Kết quả: In \(n\) số nguyên \(d_{1},d_{2},\ldots,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 Output
6
1 4 3 1 4 2
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. nongvantien11 (34/51)
  2. nnminh1806 (18/36)
  3. nhuhuyn (14/16)
Trong 7 ngày
  1. nongvantien11 (99/155)
  2. qtaydzs1tg (72/135)
  3. trungo0 (49/91)
Trong 30 ngày
  1. nongvantien11 (192/300)
  2. trungo0 (131/242)
  3. ngocbichh (110/267)
Thống kê
AC/Sub: 120817/226949
Pascal: 18142
C++: 157988
Python: 50747
Lượt xem/tải tests: 41085

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