Mistrzostwa Polski Szkół Średnich w Programowaniu Zespołowym 2024

2020-2022 2023 Regulations Schedule RODO info Ranking

Problem description


Pokrycie ciągu ciągami
(pokrycie-ciagami)
Limit pamięci: 128 MB
Limit czasu: 3.00 s

Jasio, nudząc się na lekcji matematyki, wymyślił następujące zadanie algorytmiczne.

“Dla danego zbioru liczb, ile co najmniej ciągów arytmetycznych o różnicy niemniejszej niż 10 jest potrzebnych, żeby każdy element zbioru występował w którymś z ciągów. Ciągi mogą być dowolnie długie.”

Niestety nie potrafi go rozwiązać. Napisz program, który rozwiąże zadanie Jasia.

Wejście

W pierwszym wierszu wejścia znajduje się jedna liczba naturalna N, określająca moc zbioru, który należy pokryć. W drugim wierszu wejścia znajduje się rosnący ciąg N liczb naturalnych Ai, pooddzielanych pojedynczymi odstępami. Są to elementy zbioru.

Wyjście

W pierwszym (jedynym) wierszu wyjścia powinna się znaleźć jedna liczba naturalna – minimalna liczba ciągów arytmetycznych o różnicy co najmniej 10, które są potrzebne do pokrycia zbioru podanego na wejściu.

Możesz założyć, że dane są dobrane tak, że ta liczba nie przekracza 5.

Ograniczenia

1 ≤ N ≤ 500, 1 ≤ Ai ≤ 1 000 000.

Przykład

Wejście
12
7 12 18 22 29 42 51 62 100 102 200 500

Wyjście
3

Wyjaśnienie

W tym przykładzie możliwe jest pokrycie zbioru następującymi ciągami:

  • (12,22,32,…,102), pokrywamy nim elementy 12, 22, 42, 62, 102,
  • (7,18,29,40,51), pokrywamy nim elementy 7, 18, 29, 51,
  • (100,200,300,400,500), pokrywamy nim elementy 100, 200, 500.