Pagini recente » Cod sursa (job #2829332) | Cod sursa (job #2160281) | Cod sursa (job #44680) | Cod sursa (job #2977231) | Cod sursa (job #124933)
Cod sursa(job #124933)
#include<stdio.h>
#define NMAX 20005
long poz,x[NMAX],p[NMAX],i,j,n,m,k,l,a,s,jj,y[NMAX],rez[NMAX];
int main()
{
freopen("partitie.in","r",stdin);
freopen("partitie.out","w",stdout);
scanf("%ld%ld",&n,&k);
for (i=1;i<=n;i++)
{
scanf("%ld",&x[i]);
y[i]=i;
}
a=1;
m=n;
while (a)
{
a=0;
for (i=1;i<m;i++)
if (x[i]>x[i+1]) {a=x[i]; x[i]=x[i+1]; x[i+1]=a; a=y[i]; y[i]=y[i+1];y[i+1]=a; a=1;}
m--;
}
p[1]=x[1];
m=1;
poz=1;
rez[y[1]]=1;
for (i=2;i<=n;i++)
{
a=0;
s=-10000000;
jj=-1;
for (j=1;j<=m;j++)
if (p[j]+k<=x[i]&&s<p[j]) {jj=j;s=p[j];}
if (jj!=-1)
{
rez[y[i]]=jj;
p[jj]=x[i];
}
else
{
m++;
p[m]=x[i];
rez[y[i]]=m;
}
}
printf("%ld\n",m);
for (i=1;i<=n;i++)
printf("%ld\n",rez[i]);
return 0;
}