Pagini recente » Cod sursa (job #1018114) | Cod sursa (job #2059135) | Cod sursa (job #3249971) | Cod sursa (job #3143899) | Cod sursa (job #128024)
Cod sursa(job #128024)
#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-d;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;
}