Pagini recente » Cod sursa (job #298731) | Cod sursa (job #862283) | Cod sursa (job #2124645) | Cod sursa (job #3151698) | Cod sursa (job #128033)
Cod sursa(job #128033)
#include<stdio.h>
#include<stdlib.h>
#define N 300001
int n,d;
struct vec{
int x,poz,part;
}v[N];
void read()
{
int i;
scanf("%d%d",&n,&d);
for(i=1;i<=n;i++)
{
scanf("%d",&v[i].x);
v[i].poz=i;
}
}
int compare(const void *a,const void *b)
{
vec *aa=(vec*)a,*bb=(vec*)b;
return aa->x-bb->x;
}
int compare2(const void *a,const void *b)
{
vec *aa=(vec*)a,*bb=(vec*)b;
return aa->poz-bb->poz;
}
void solve()
{
int i,j,max=0,k,poz;
qsort(v+1,n,sizeof(v[0]),compare);
poz=1;
for(j=poz+1;j<=n;j++)
if(v[j].x-v[poz].x<=d-1&&max<j-poz+1)
{
max=j-poz+1;
poz=j;
}
printf("%d\n",max);
k=1;
for(i=1;i<=n;i++)
{
if(k>max)
k=1;
v[i].part=k++;
}
qsort(v+1,n,sizeof(v[0]),compare2);
for(i=1;i<=n;i++)
printf("%d\n",v[i].part);
}
int main()
{
freopen("partitie.in","r",stdin);
freopen("partitie.out","w",stdout);
read();
solve();
return 0;
}