Pagini recente » Cod sursa (job #535867) | Cod sursa (job #405474) | Cod sursa (job #2764568) | Cod sursa (job #2365931) | Cod sursa (job #125981)
Cod sursa(job #125981)
#include <stdio.h>
#include <stdlib.h>
int v[310000], ord[310000], n, d, a[310000];
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++)
{
for (j = i + 1; a[j] - a[i] < d && j < n; j++);
if (max < j - i) max = j - i;
i = j;
}
j = 1;
for (i = 0; i < n; i++)
{
v[ord[i]] = j;
j++;
if (j == max + 1) j = 1;
}
printf("%d\n",max);
for (i = 0; i < n; i++) printf("%d\n",v[i]);
return 0;
}