Reunión de amigos#11714

Reunión de amigos

1,5 segundos
256 megabytes
Difícil

Sakurako tiene amigos. Cada uno de ellos puede ser descrito por su contribución en la página web de programación competitiva CodeCoders. El amigo está descrito por un número a_i — su contribución.

En este momento, dentro de estos amigos, el amigo está familiarizado con el amigo si y solo si |a_i-a_j|<k. Sakurako quiere reunir a la mayor cantidad de personas posible para la fiesta. Sin embargo, quiere que todos ellos sean desconocidos entre sí.

Formalmente, si elige invitar a un conjunto de personas \mathcal{S}=\{x_1,x_2,\dots,x_m\}, entonces para cada i,j\in \mathcal{S} donde i\neq j, se debe cumplir la condición |a_{x_i}-a_{x_j}|\ge k.

De todos los posibles conjuntos de personas, quiere saber el tamaño del más grande.

Desafortunadamente, Sakurako no conoce el valor de , por lo que tiene que calcular la respuesta para cada (1 \le k\le n).

Entrada

La primera línea contiene un entero (1\le n\le 10^6) — cantidad de amigos de Sakurako.

La segunda línea contiene enteros a_1,\dots,a_n (-5\cdot 10^5\le a_i\le 5\cdot 10^5) — contribución de cada amigo.

Salida

Salida números. El -ésimo número denota el tamaño más grande del conjunto para k = i.

Ejemplos

Ejemplo

Loading
Loading

Nota

En la primera prueba:

  • Cuando k=1, \mathcal{S}=\{1,2,3,4,6\};

  • Para k=2, se puede demostrar que el mayor posible es \mathcal{S}=\{1,3,4,6\};

  • Para k=3, k=4 y k=5, se puede demostrar que uno de los mayores posibles es \mathcal{S}=\{3,4,6\};

  • Para k=6, se puede demostrar que uno de los mayores posibles es \mathcal{S}=\{1,4\}.

Puntuación

  1. ( puntos): a_i=a_{i-1}+1 para todo 2\le i\le n;

  2. ( puntos): -10\le a_i\le 10;

  3. ( puntos): n\le 1000;

  4. ( puntos): -30\le a_i\le 30;

  5. ( puntos): sin restricciones adicionales.