Pagini recente » Cod sursa (job #2219513) | Cod sursa (job #1925943) | Cod sursa (job #1071944) | Cod sursa (job #415169) | Cod sursa (job #124939)
Cod sursa(job #124939)
#include <stdio.h>
#include <algorithm>
using namespace std;
long i, n, d, k, j, partitii, v[300010];
struct lol
{
long n, p;
};
lol x[300010], part[300010];
int cmpf(const lol a, const lol b)
{
return a.n < b.n;
}
int main()
{
freopen ("partitie.in", "rt", stdin);
freopen ("partitie.out", "wt", stdout);
scanf("%ld %ld", &n, &d);
for (i = 1; i <= n; i ++)
{
scanf("%ld", &x[i].n);
x[i].p = i;
}
sort(x + 1, x + n + 1, cmpf);
for (i = 1; i <= n; i ++)
{
k = 0;
for (j = 1; j <= partitii && !k; j ++)
{
if (x[i].n - part[j].n >= d)
part[j].n = x[i].n, v[x[i].p] = j, k = 1;
}
if (k == 0)
part[++ partitii].n = x[i].n, v[x[i].p] = partitii;
}
printf("%ld\n", partitii);
for (i = 1; i <= n; i ++)
printf("%ld\n", v[i]);
return 0;
}