Pagini recente » Cod sursa (job #3122) | Cod sursa (job #1742106) | Cod sursa (job #567380) | Cod sursa (job #2411977) | Cod sursa (job #1744138)
#include <cstdio>
#include <algorithm>
#define MAXN 300000
struct Data{
int val;
int poz;
};
Data V[MAXN+1];
int ans[MAXN+1];
bool cmp(Data a,Data b){
return a.val<b.val;
}
int main(){
FILE*fi,*fout;
int i,begin,end,max,n,d,con;
fi=fopen("partitie.in" ,"r");
fout=fopen("partitie.out" ,"w");
fscanf(fi,"%d %d " ,&n,&d);
for(i=1;i<=n;i++){
fscanf(fi,"%d " ,&V[i].val);
V[i].poz=i;
}
std::sort(V+1,V+n+1,cmp);
begin=1;
end=1;
max=0;
while(begin<=n){
while(end<=n&&V[end].val-V[begin].val<=d-1)
end++;
if(max<end-begin)
max=end-begin;
begin++;
}
fprintf(fout,"%d\n" ,max);
con=1;
for(i=1;i<=n;i++){
ans[V[i].poz]=con;
con++;
if(con==max+1)
con=1;
}
for(i=1;i<=n;i++)
fprintf(fout,"%d\n" ,ans[i]);
fclose(fi);
fclose(fout);
return 0;
}