Pagini recente » Cod sursa (job #240284) | Cod sursa (job #551727) | Cod sursa (job #930923) | Cod sursa (job #141629) | Cod sursa (job #184641)
Cod sursa(job #184641)
#include<stdio.h>
#include<algorithm>
using namespace std;
int poz[300010];
pair<int,int> nr[300010];
int main(){
freopen("partitie.in","r",stdin);
freopen("partitie.out","w",stdout);
int n,d,i,j,max=0;
scanf("%d%d",&n,&d);
for(i=0;i<n;++i){
scanf("%d",&nr[i].first);
nr[i].second=i;
}
sort(nr,nr+n);
j=0;
for(i=0;nr[i].first+d-1<=nr[n-1].first;++i){
while(nr[j].first-nr[i].first<=d-1 && j<n)
++j;
if(j-i>max)
max=j-i;
}
for(i=0;i<n;++i){
for(j=0;j<max && i+j<n;++j)
poz[nr[i+j].second]=j+1;
i+=max-1;
}
printf("%d\n",max);
for(i=0;i<n;++i)
printf("%d\n",poz[i]);
fclose(stdin);
fclose(stdout);
return 0;
}