Pagini recente » Cod sursa (job #1032420) | Cod sursa (job #2143814) | Monitorul de evaluare | Cod sursa (job #2337005) | Cod sursa (job #128025)
Cod sursa(job #128025)
#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;
qsort(v+1,n,sizeof(v[0]),compare);
for(i=1;i<n;i++)
for(j=i+1;j<=n;j++)
if(v[j].x-v[i].x<=d-1&&max<j-i+1)
max=j-i+1;
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;
}