Pagini recente » Cod sursa (job #491712) | Cod sursa (job #1766759) | Cod sursa (job #1580786) | Cod sursa (job #2390802) | Cod sursa (job #473000)
Cod sursa(job #473000)
#include <stdio.h>
#include <algorithm>
using namespace std;
int n, d, sol;
int v[300002], o[300002], c[300002];
inline int cmp (int i, int j) {return v[i] < v[j];}
int main ()
{
freopen ("partitie.in", "r", stdin);
freopen ("partitie.out", "w", stdout);
scanf ("%d %d", &n, &d);
d --;
int i, j;
for (i = 1; i <= n; i ++)
{
scanf ("%d", &v[i]);
o[i] = i;
}
sort (o + 1, o + n + 1, cmp);
j = 1;
for (i = 1; i <= n; i ++)
{
while (j <= n && v[o[j]] - v[o[i]] <= d)
j ++;
j --;
if (j - i + 1> sol)
sol = j - i + 1;
}
printf ("%d\n", sol);
for (i = 1; i <= n; i ++)
c[o[i]] = i % sol + 1;
for (i = 1; i <= n; i ++)
printf ("%d\n", c[i]);
return 0;
}