Pagini recente » Cod sursa (job #2627511) | Cod sursa (job #410600) | Cod sursa (job #2627510) | Cod sursa (job #2239353) | Cod sursa (job #1493822)
#include <cstdio>
#include <algorithm>
#define DIM (1<<19)
#define f first
#define s second
using namespace std;
int N, K, D;
int F[DIM];
pair <int, int> V[DIM];
int main(){
freopen("partitie.in" ,"r", stdin );
freopen("partitie.out","w", stdout);
scanf("%d %d", &N, &D);
for(int i = 1; i <= N; i ++){
scanf("%d", &V[i].f);
V[i].s = i;
}
sort(V + 1, V + N + 1);
int p = 1, u = 1;
while(p <= N){
while(u <= N && V[u].f - V[p].f < D)
u ++;
K = max(K, u - p);
p ++;
}
int i = 1;
while(i <= N){
for(int j = 1; j <= K && i <= N; j ++, i ++)
F[V[i].s] = j;
}
printf("%d\n", K);
for(int i = 1; i <= N; i ++)
printf("%d\n", F[i]);
fclose(stdin );
fclose(stdout);
return 0;
}