Pagini recente » Cod sursa (job #2104927) | Cod sursa (job #1562340) | Profil teodorcalin | Cod sursa (job #2297284) | Cod sursa (job #125966)
Cod sursa(job #125966)
#include <stdio.h>
#include <stdlib.h>
int v[300010], ord[300010], n, d, a[300010];
int cmp(const void *a, const void *b)
{
int x = *(int*)a, y = *(int*)b;
return v[x] - v[y];
}
int main()
{
freopen("partitie.in","r",stdin);
freopen("partitie.out","w",stdout);
int i, j, max = 0;
scanf("%d %d", &n, &d);
for (i = 0; i < n; i++) { scanf("%d",&v[i]); ord[i] = i;}
qsort (ord, n, sizeof(int),cmp);
for (i = 0; i < n; i++) a[i] = v[ord[i]];
max = 1;
for (i = 0; i < n; i++)
{
j = i + 1;
while (a[j] - a[i] < d && j < n) j++;
if (max < j - i) max = j - i;
}
j = 1;
for (i = 0; i < n; i++)
{
a[i] = j;
j++;
if (j == max + 1) j = 1;
v[ord[i]] = a[i];
}
printf("%d\n",max);
for (i = 0; i < n; i++) printf("%d\n",v[i]);
return 0;
}