Pagini recente » Cod sursa (job #1160956) | Cod sursa (job #3213729) | Cod sursa (job #669521) | Cod sursa (job #1949795) | Cod sursa (job #1492729)
#include<cstdio>
#include<algorithm>
using namespace std;
struct sa{
int a;
int b;
}v[300100],a;
int n,d,i,j,nr,p,u,x[300100],y[300100];
FILE *f,*g;
int cmp(sa a,sa b){
return a.a<b.a;
}
int main(){
f=fopen("partitie.in","r");
g=fopen("partitie.out","w");
fscanf(f,"%d%d",&n,&d);
for(i=1;i<=n;i++){
fscanf(f,"%d",&v[i].a);
v[i].b=i;
}
sort(v+1,v+n+1,cmp);
nr=x[ v[1].b ]=1;
y[1]=1;
p=u=1;
for(i=2;i<=n;i++){
a=v[ y[p] ];
if(v[i].a-a.a>=d){
p++;
x[ v[i].b ]=x[a.b];
y[++u]=i;
}
else{
u++;
x[ v[i].b ]=++nr;
y[u]=i;
}
}
fprintf(g,"%d\n",nr);
for(i=1;i<=n;i++){
fprintf(g,"%d\n",x[i]);
}
fclose(f);
fclose(g);
return 0;
}