Pagini recente » Cod sursa (job #2887057) | Cod sursa (job #1028855) | Cod sursa (job #724157) | Cod sursa (job #1637794) | Cod sursa (job #180244)
Cod sursa(job #180244)
#include<stdio.h>
#include<algorithm>
#define MAXN 300001
using namespace std;
struct element{long a,nr;} v[MAXN];
long n,i,j,maxsol,d,maxd,x;
long sol[MAXN];
bool comp(const element &a, const element &b)
{
return a.a<b.a;
}
int main(void)
{
freopen("partitie.in","r",stdin);
freopen("partitie.out","w",stdout);
scanf("%ld%ld",&n,&d);
for(i=1;i<=n;i++)
{
scanf("%ld",&v[i].a);
v[i].nr=i;
}
sort(v+1,v+n+1,comp);
maxd=2;
for(i=1;i<=n;i++)
{
j=maxd;
while(v[j].a-d<v[i].a&&j<=n)
j++;
if(j-i>maxsol)
maxsol=j-i;
maxd=j;
}
printf("%ld\n",maxsol);
for(i=1,x=1;i<=n;i++,x++)
{
if(x>maxsol)
x-=maxsol;
sol[v[i].nr]=x;
}
for(i=1;i<=n;i++)
printf("%ld\n",sol[i]);
return 0;
}