Mistrzostwa Polski Szkół Średnich w Programowaniu Zespołowym 2024
Problem description
Transport wojsk podczas wojny nuklearnej to trudne zadanie. Częste naloty i skażenie uniemożliwia przejście z jednego okopu do drugiego. Potrzebny jest plan działania i ulepszenie systemu obronnego.
Każdy z okopów jest reprezentowany przez unikalną liczbę opisującą jego znaczenie strategiczne. Z okopu o wartości a da się przejść do okopu o wartości b, jeżeli liczby a oraz b nie są względnie pierwsze, tj. istnieje dzielnik d > 1, który dzieli zarówno a, jak i b.
Ta nietypowa struktura wprowadziła dowództwo w zakłopotanie. Czasami nie da się przejść pomiędzy okopami bez narażenia odziału na stratę. Podstanowiono podjąc jedyną sensowną decyzję: trzeba budować nowe okopy obok już istniejących. To znaczy, dla wybranego okopu o wartości ai jest budowany nowy o wartości (ai+1) ⋅ ai, oczywiście jeżeli taki jeszcze nie istnieje.
Pomóż im i odpowiedz na Q niezależnych zapytań o minimalną liczbę nowych okopów, które należy wybudować, aby możliwe było bezpiecznie poruszać się pomiędzy okopami o wartościach asj oraz atj.
Wejście
W pierwszym wierszu wejścia znajdują się dwie liczby N oraz Q oznaczające liczbę okopów oraz liczbę zapytań.
Następnie podane są N różnych liczb całkowitych a1, a2, …, aN, będące wartościami już istniejących okopów.
Kolejne Q wierszy zawiera pary liczb całkowitych tj i sj, reprezentujące indeksy okopów w zapytaniach.
Wyjście
Wypisz dokładnie Q wierszy, gdzie j-ty z nich powinien zawierać jedną liczbę — minimalną liczbę nowych okopów, które trzeba zbudować, aby oddział mógł bezpiecznie poruszać się pomiędzy okopami asj oraz atj.
Ograniczenia
2 ≤ N ≤ 150 000, 1 ≤ Q ≤ 300 000, 2 ≤ ai ≤ 106, ai ≠ aj jeżeli i ≠ j, 1 ≤ sj, tj ≤ N, sj ≠ tj.
Podzadania
Podzadanie | Warunki | Punkty |
---|---|---|
1 | N, Q, ai ≤ 1 000 | 4 |
2 | potrzeba wybudować maksymalnie jeden okop | 13 |
3 | ai ≤ 1 000 | 13 |
4 | brak dodatkowych ograniczeń | 70 |
Przykład
Wejście | Wyjście | |
|
|
Wejście | Wyjście | |
|
|