Pagini recente » Cod sursa (job #499545) | Cod sursa (job #895356) | Cod sursa (job #3268909) | Cod sursa (job #2090537) | Cod sursa (job #125278)
Cod sursa(job #125278)
#include<stdio.h>
long a[300002],b[300002],d,n,i,j,ko,ok,k,mul[300002];
void sort(long *p,long l,long r)
{long i,j,x,y;
i=l;j=r;x=a[p[(l+r)/2]];
do
{
while (a[p[i]]<x)i++;
while (x<a[p[j]])j--;
if (i<=j)
{
y=p[i];p[i]=p[j];p[j]=y;
i++;j--;
}
}while (i<=j);
if (l<j) sort(p,l,j);
if (i<r) sort(p,i,r);
}
int main()
{
freopen("partitie.in","r",stdin);
freopen("partitie.out","w",stdout);
scanf("%ld %ld",&n,&d);
for (i=1;i<=n;i++)
{scanf("%ld",&a[i]);b[i]=i;}
sort(b,1,n);
j=0;
for (i=1;i<=n;i++)
{
ko=1;
for(k=1;k<=j;k++)
{
ok=1;
if (a[b[i]]-mul[k]<d)
ok=0;
if (ok)
{
mul[k]=a[b[i]];
ko=0;
a[b[i]]=k;
break;
}
}
if (ko)
{
j++;
mul[j]=a[b[i]];
a[b[i]]=j;
}
}
printf("%ld\n",j);
for (i=1;i<=n;i++)
printf("%ld\n",a[i]);
return 0;
}