Pagini recente » Cod sursa (job #259453) | Cod sursa (job #2347989) | Cod sursa (job #279334) | Cod sursa (job #2713577) | Cod sursa (job #2662186)
#include <iostream>
#include <fstream>
#include <algorithm>
using namespace std;
ifstream f("partitie.in");
ofstream g("partitie.out");
int v[300001], P[300001];
bool cmp(int a, int b)
{
return v[a] < v[b];
}
int main()
{
int N, D, Max = 0;
f >> N >> D;
for(int i = 1; i <= N; ++i)
{
f >> v[i];
P[i] = i;
}
sort(P + 1, P + N + 1, cmp);
sort(v + 1, v + N + 1);
for(int i = 1; i <= N; ++i)
{
int j;
for(j = i + 1; j <= N; ++j)
if(v[j] - v[i] > D - 1)break;
Max = max(Max, j - i);
i = j;
}
g << Max << '\n';
for(int i = 1; i <= N; ++i)
v[P[i]] = i % Max + 1;
for(int i = 1; i <= N; ++i)
g << v[i] << '\n';
return 0;
}