Pagini recente » ten1 | Cod sursa (job #70390) | Cod sursa (job #1056707) | Cod sursa (job #1113456) | Cod sursa (job #359877)
Cod sursa(job #359877)
#include<stdio.h>
#include<algorithm>
using namespace std;
long n,d,i,x,b[300050],mac;
struct che{long x,y;}a[300050];
long cmp(che a,che b)
{if(a.x<b.x)return 1;
return 0;}
int main()
{
freopen("partitie.in","r",stdin);
freopen("partitie.out","w",stdout);
scanf("%ld%ld",&n,&d);
for(i=1;i<=n;++i)
scanf("%ld",&a[i].x),a[i].y=i;
sort(a+1,a+n+1,cmp);
x=1;
for(i=1;i<=n;++i)
if(a[i].x-a[x].x>=d)
{if(i-x>mac)
mac=i-x;
while(a[i].x-a[x].x>=d)
++x;
}
if(n-x+1>mac)
mac=i-x+1;
printf("%ld\n",mac);
for(i=1;i<=n;++i)b[a[i].y]=(i-1)%mac+1;
for(i=1;i<=n;++i)
printf("%ld\n",b[i]);
return 0;
}