Pagini recente » Cod sursa (job #2384418) | Cod sursa (job #1003166) | Cod sursa (job #1735008) | Cod sursa (job #2355715) | Cod sursa (job #214144)
Cod sursa(job #214144)
#include <stdio.h>
#include <algorithm>
#define mx 300010
using namespace std;
pair <int, int> a[mx];
int n, d, nr_part;
int v[mx];
int main()
{
freopen("partitie.in","r",stdin);
freopen("partitie.out","w",stdout);
scanf("%ld %ld", &n, &d);
for (int i = 1, nr = 0; i <= n; i++)
{
scanf("%ld", &nr);
a[i] = make_pair (nr, i);
}
sort(a + 1, a + 1 + n);
for (int i = 1, j = 1; i <= n; i++)
if (a[i].first - d >= a[j].first)
{
v[a[i].second] = v[a[j].second];
j++;
}
else v[a[i].second] = (++nr_part);
printf("%ld\n", nr_part);
for (int i = 1; i <= n; i++)
printf("%ld\n", v[i]);
fclose(stdin);
fclose(stdout);
return 0;
}