Pagini recente » Cod sursa (job #1205929) | Cod sursa (job #660521) | Cod sursa (job #761104) | Cod sursa (job #2852994) | Cod sursa (job #195518)
Cod sursa(job #195518)
#include<stdio.h>
#include<algorithm>
using namespace std;
struct ada {int a,p;}v[300011];
int n,d,i,j,sol[300011];
int cmp(ada a, ada b){
return a.a<b.a;
}
int main(){
FILE *f=fopen("partitie.in","r");
fscanf(f,"%d %d",&n,&d);
for(i=1;i<=n;i++){
fscanf(f,"%d",&v[i].a);
v[i].p=i;
}
sort(v+1,v+n+1,cmp);
fclose(f);
int maxx=0;
for(i=1;i<n;i++){
j=i;
while(v[j].a-v[i].a < d){
j++;
if(j>n)
break;
}
j--;
if(maxx<j-i+1)
maxx=j-i+1;
}
FILE *g=fopen("partitie.out","w");
int p=1;
for(i=1;i<=n;i++){
sol[v[i].p]=p;
p++;
if(p>maxx)
p=1;
}
fprintf(g,"%d\n",maxx);
for(i=1;i<=n;i++){
fprintf(g,"%d\n",sol[i]);
}
fclose(g);
return 0;
}